站长这几天在研究网络爬虫,偶然看见了一个工具,名为“Selenium”。可以模拟浏览器的所有真实操作,比普通GET和POST请求强大不少,可以模拟页面按钮点击事件等一系列操作。
Selenuim提供了多种浏览器内核的支持,不过需要另外安装。最常用的是chromedriver,也有用IE11或者Firefox内核的。
对于编写爬虫,最常用的语言是python,但爬虫软件经常会被各个网站的反爬虫机制限制,获取到错误的或者空的结果。Selenium可以杜绝浏览器环境层面的反爬虫,可以真实地执行页面的js,骗过所有前端的反爬虫机制。
原生Python并不携带Selenium支持库,需要另外安装。对于Linux系统,可以执行如下shell指令来安装Selenium的支持:
pip install Selenium
Selenium调用浏览器必须有一个浏览器内核驱动文件:
Chrome驱动文件下载:chromedriver
下载完驱动文件后,对于Linux系统,需要把驱动二进制文件移动到/usr/bin 文件夹下,需要root管理员权限。这里就不再赘述如何移动文件了。
这一切准备工作干完后,我们开始写代码。这里给各位一个参考教程,对新手入门很有帮助: Selenium入门
这里直接给例程:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
#配置浏览器访问参数
chrome_opt = Options() # 创建参数设置对象.
chrome_opt.add_argument('--headless') # 无界面化.
chrome_opt.add_argument('--disable-gpu') # 配合上面的无界面化.
chrome_opt.add_argument('--window-size=1366,768') # 设置窗口大小, 窗口大小会有影响.
chrome_opt.add_argument("--no-sandbox") #使用沙盒模式运行
# 创建Chrome对象并传入设置信息.
browser = webdriver.Chrome(chrome_options=chrome_opt)
url = "https://www.baidu.com/"
browser.get(url)#发送请求
print(browser.page_source)#打印页面源代码
'''
Selenium提供了8种定位方式。
id
name
class name
tag name
link text
partial link text
xpath
css selector
这8种定位方式在Python selenium中所对应的方法为:
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_xpath()
find_element_by_css_selector()
定位方式和一般dom定位方式没什么不同,也就是getElementbyId,getElementsbyClassName这类。
'''
browser.quit()#终止Selenium
在本文的最后,总结一下:Selenium是一个有强大功能的Web自动化工具,不过其缺点是相对资源占用较大,一般来说没什么问题,但内存比较吃紧的服务器需要慎重考虑。在最后附上Selenium项目的官网:Selenium