python 爬虫进阶 selenium 基础&进阶操作

爬虫利器selenium库基础

from selenium import webdriver
browser = webdriver.Chrome()
url = 'https://www.baidu.com/'
browser.get(url)
data = browser.page_source
# browser.quit()  # 退出模拟浏览器
print(data)

进阶知识点

打开及关闭网页+网页最大化

from selenium import webdriver
browser = webdriver.Chrome()
browser.maximize_window()
browser.get("https://www.baidu.com/")
# browser.quit()  # 退出模拟浏览器

xpath 方法定位元素

from selenium import webdriver
browser = webdriver.Chrome()
browser.get("https://www.baidu.com/")
browser.find_element_by_xpath('//*[@id="kw"]').send_keys('python')
browser.find_element_by_xpath('//*[@id="su"]').click()

css_selector方法来定位元素

from selenium import webdriver
browser = webdriver.Chrome()
browser.get("https://www.baidu.com/")
browser.find_element_by_css_selector('#kw').send_keys('python')
browser.find_element_by_css_selector('#su').click()

browser.page_source方法来获取模拟键盘鼠标点击

from selenium import webdriver
import time
browser = webdriver.Chrome()
browser.get("https://www.baidu.com/")
browser.find_element_by_xpath('//*[@id="kw"]').send_keys('python')
browser.find_element_by_xpath('//*[@id="su"]').click()
time.sleep(3)  # 因为是点击按钮后跳转,所以最好休息3秒钟再进行源代码获取,如果是直接访问网站,则通常不需要等待。
data = browser.page_source
print(data)

rowser.page_source方法来获取新浪财经股票信息

from selenium import webdriver
browser = webdriver.Chrome()
browser.get("http://finance.sina.com.cn/realstock/company/sh000001/nc.shtml")
data = browser.page_source
print(data)

Chrome Headless无界面浏览器设置

from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
browser = webdriver.Chrome(options=chrome_options)
browser.get("http://finance.sina.com.cn/realstock/company/sh000001/nc.shtml")
data = browser.page_source
print(data)

切换子页面;切换浏览器同级页面;滚轴滚动

 browser.switch_to.frame(子页面的name值) 

切换浏览器同级页面

from selenium import webdriver
browser = webdriver.Chrome()
browser.get("https://www.baidu.com/s?rtt=1&bsst=1&cl=2&tn=news&ie=utf-8&word=阿里巴巴")
browser.find_element_by_xpath('//*[@id="1"]/div/h3/a').click()  # 模拟点击第一条新闻,会新打开一个网页

handles = browser.window_handles  # 获取浏览器所有窗口句柄,也即各个窗口的身份信息
# browser.switch_to.window(handles[0])  # 切换到最开始打开的窗口
browser.switch_to.window(handles[-1])  # 切换到最新(倒数第一个)打开的窗口
data = browser.page_source  # 这里获取到的就是新打开页面的网页源代码了
print(data)
控制滚轴滚动,将在之后节结合案例进行详细讲解。

方法1:滚动1个页面高度的距离(非常灵活,强烈推荐)

browser.execute_script('window.scrollTo(0, document.body.scrollHeight)')

方法2:离最顶端向下滚动60000像素距离,通常也就是滚到最下面了

browser.execute_script('document.documentElement.scrollTop=60000')
添加新评论