python 爬虫日志(12) selenium+chromeheadless

最近正在写一个爬取淘宝全部店铺信息的爬虫,因为淘宝的网页内容基本都是动态加载的,因此用BeautifulSoup+requests的方法就难以应付了,由于request获得的只是网页的源代码,和开发者工具中看到的不同,不少数据都是后来再加载的,因此有时咱们须要分析ajax请求来得到数据,但这样有时太过麻烦,不过咱们还有另外一个神器selenium。这是一个自动化测试工具,有了它,就能够用代码让程序模拟执行人在浏览器上的全部操做,让数据动态加载,加载后的完整代码就都可以获取,和咱们在开发者工具中看到的同样,这样就不用担忧网页动态加载的问题了。css

关于selenium的下载就很少说网上不少资料,selenium老是要配合第三方浏览器使用的,之前selenium一直和phantomjs是好伙伴,但如今听说已经分道扬镳了,谷歌也推出了chromeheadless无界面浏览器,彻底能够取代phantomjs。这里附上selenium文档,为了让selenium驱动谷歌浏览器,咱们还须要一个chromedriver,这个也请你们到网上下载,不过必定注意要与chrome的版本对应,否则可能会产生一些问题。html

# selenium
from selenium import webdriver 引入驱动器

browser = webdriver.Chrome()  # 创立一个chrome浏览器对象
browser.get('http://www.baidu.com')  # 请求网页,运行到此的三行代码,就能够发现程序自动打开了一个浏览器

#若是是运行无界面版的chrome则
option = webdriver.ChromeOption()
option.add_argument('headless')
browser = webdriver.Chrome(chrome_options=option)
browser.get('http://www.baidu.com')  # 将上面的代码这样写,就发现没有浏览器打开了,此时是无界面形式

#最经常使用的方法是寻找元素的函数,如find_element_by_class_name(),find_elements_by_class_name(),前一种返回第一个找到的webelement对象,后一种返回一个列表包含全部的对象,另外还能够经过id,css_selector,xpath,tag_name等多种方法来定位元素

#若要浏览器执行js代码,则将命令写到一个字符串中,则调用excute_script()方法就能够执行js命令,如将页面移到底部
js = "window.scrollTo(0,document.body.scrollHeight)"
browser.execute_script(js)

#对于可点击的元素能够用
element.click()来点击
#对于输入框元素能够用
element.send_keys('输入的内容') #来输入内容

关于selenium的更多用法,能够去查询文档,我也会在后面的使用中,将新的用法记录在博客中。python

相关文章
相关标签/搜索