python作为一种动态语言,具有非常高的一发效率,用它来开发定向爬虫,非常适合。目前,已经有不少好用的库可以直接使用,大大加快开发过程。
爬虫一般可以分为静态爬虫和动态爬虫,其中静态爬虫是通过分析要抓取的页面结构,定位到抓取的关键步骤和关键位置后,直接进行数据抓取并进行页面解析,最终得到目标数据。
适用于静态页面和简单的Ajax页面。当页面过于复杂时(如需要Cookies验证、通过Ajax获取数据,并经过复杂渲染过程)人工分析的成本将显著加大,此时可通过使用动态爬虫进行抓取。本文以抓取京东商品信息为例,讲述动态爬虫的一般过程。在此之前,我们先了解一下静态爬虫的常用技术。
基于Python的静态爬虫
网页抓取库
列表内容 urllib urllib2 request …
页面解析库
beautifulsoup lxml HTMLParser …
基于Python的动态爬虫
动态爬虫主要解决JS执行和DOM渲染的问题,常见的渲染方式有
- Webkit
- CEF
- PhantomJS
- Electron
- Chrome
- Firefox
- …
本文中我们选用selenium对Chrome进行控制,实现数据的渲染和抓取。 selenium是一个web的自动化测试工具,可以操作Chrome、Firefox等浏览器。
环境配置
selenium
python下selenium的安装可以参考https://selenium-python.readthedocs.io/installation.html chromedriver
下载chromedriver(https://chromedriver./2.7/chromedriver_win32.zip)
解压后将chromedriver拷贝至Chrome的安装目录,并设置环境变量,将chromedriver的路径添加到Path中去
测试脚本
from selenium import webdriver
import json
driver=webdriver.Chrome()
driver.get('/list.html?cat=9987,653,655')
products=driver.execute_script('return JSON.stringify(slaveWareList);')
products=json.loads(products)
for product in products:
print product
运行上述脚本,将启动一个Chrome浏览器,并自动打开代码中指定的URL链接(/list.html?cat=9987,653,655),通过浏览器可以看到手机的商品列表页面。
在Python控制台将打印出所有的商品ID号
除此之外,还可以进一步获取商品的详细信息,并实现翻页等操作,读者可以自行展开研究。Selenium的API接口使用方法可在https://selenium-python.readthedocs.io/installation.html上找到相应的内容。
后续内容
基于electron实现动态页面数据提取的方法(待续)
如果觉得《python爬京东联盟_Python+Selenium+Chrome抓取京东商品信息》对你有帮助,请点赞、收藏,并留下你的观点哦!