爬虫利器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')