*使用Python爬取京东华为手机前十页的所有商品的链接、名称、价格、评价数以及店铺名称。
1.前期准备
(1)下载驱动
我使用的是谷歌浏览器,所以要下载谷歌驱动,用来告诉电脑在哪打开浏览器。
驱动文件下载地址:http://chromedriver.storage.googleapis.com/index.html
(需要下载与自己的浏览器版本相一致或者相近版本的驱动,要记住驱动下载之后存放的位置)
(2)安装第三方库
selenium,time,xlwt都是爬虫需要用到的库
安装方法1:
在pycharm最下面有一行选项,如下图,选择Terminal
选择完之后,在出来的页面输入pip install +你要安装的库,之后等待它自动安装就可以了
例如安装time库
安装方法2:
在搜索栏中搜索你要安装的库,找到之后点击左下角的Install Package
之后等待安装,若成功会显示
2.开始编程
(1)在谷歌中打开京东
executable_path就是你下载的驱动的存放位置
(2)在京东中搜索“华为手机”
我们要电脑模拟人去在搜索框中输入“华为手机”,就要使用输入框的xpath定位到输入框的位置,那这么获取元素的xpath呢?
在谷歌中打开京东网页,按住Ctrl+Shift+l打开网页源码,在代码的左上角有一个箭头的图标(这个图标是你在页面滑动到哪,对应的源代码哪处高亮显示,这就表示此处对应的源代码)
找到源代码后右击,再点Copy\Copy XPath就得到了输入框的xpath
得到xpath之后就可以写代码了,使用find_element_by_xpath方法通过xpath定位输入框,在里面输入“华为手机”,再定位搜索按钮的位置,单击它进行搜索(注意:由于网络问题网页加载可能过慢,建议跳转页面要休息几秒钟,这样防止下一步进行时网页还没跳转成功)
(3)获取单个商品信息
进入到商品页面之后,我们先爬取第一个商品信息
我们获取商品信息同样适用xpath定位元素位置,但这个时候尽量不要使用上面的方法获得xpath,因为那样获得的xpath在定位是会根据html一层一层的寻找,花费时间太久,我们可以自己写xpath来缩短定位时间。
我们可以看到,商品对应的价格信息存放在下图红色框框出来的div中,我们就可以直接定位到对应的div中去获取价格
//表示跨级搜索,/表示逐级搜索
找到价格信息的位置之后要获取其中的内容,则要使用get_attribute(“textContent”)方法
获得了单个商品的价格信息后,其他信息也重复相同步骤
(爬取一个页面多个商品在单个商品的外面加循环即可,爬取多个页面在上述基础上再加循环即可,获得的数据可以用列表存储起来,方便下面写入到表格中)
(4)数据写入表格
3.完整代码
from selenium import webdriver
from time import sleep
import xlwt # 进行excel操作