您的位置:首页 > 新闻资讯 >文章内容
借用爬虫代理来抓取商品信息
来源:互联网 作者:admin 时间:2019-05-23 10:45:24

借用爬虫代理来抓取商品信息,这会更加的顺利,爬虫代理首先就为爬虫解决了IP限制的问题,这样就要再针对相应的反爬虫,就可以很好的拿到想要的数据了。

机灵代理下面以某宝某只松鼠店铺为例爬取”坚果炒货”的商品名称、价格、销量以及评论数量。

有些网站会针对爬虫采取反爬虫措施,比如常见的验证码,虽然验证码主要是用来防止CSRF攻击的,但也有网站用来处理爬虫,比如某宝。这时候,就要为大家介绍另一个神器了,Python的Selenium模块。

简单的说,Selenium是一个主要用来进行自动化测试的工具,它可以配合浏览器驱动在各个浏览器中运行,依照代码自动地模拟人的操作,去获取网页元素或对网页元素进行控制。当然,Selenium并不是Python的产物,而是一个独立的项目,Python对Selenium提供支持。

安装selenium模块

要使用Selenium这种第三方的工具,我们首先要进行安装,这里依然用到pip工具。在管理员权限下运行命令行,输入pip install selenium,稍等片刻后便可以完成安装,如果觉得网络连接官方pypi镜像速度较慢,可以使用国内豆瓣的镜像源,pip install selenium -i https://pypi.douban.com/simple/,加上这个-i参数和豆瓣pypi镜像的地址就可以了,如果想要默认使用豆瓣镜像源,请自行百度修改方法。

下载Google Chrome Driver

在安装成功后,我们就需要安装下一个必要的东西了,浏览器驱动,前面说过,selenium需要配合浏览器驱动运行,因此我们以安装Google Chrome Driver为例。

首先,我们需要查看自己的谷歌浏览器版本,这个在谷歌的”帮助”中可以查看,具体方法是,打开Chrome,点击右上角的三个点状的按钮,接着在弹出的菜单中依次选择帮助(E) -> 关于 Google Chrome(G)如下图所示:

借用爬虫代理来抓取商品信息


作者的浏览器是更新到当前最新的版本63的,旧版本的操作方法大致一致。

点开关于信息后,我们可以看到当前的Chrome版本,以下图为例:

借用爬虫代理来抓取商品信息


Chrome一直在升级,因此对应的驱动也得不断升级,并且与Chrome版本相适应。这里我们需要查找相应的ChromeDriver版本映射,根据版本映射表,下载对应版本的ChromeDriver。

这里需要进行环境变量的配置,如第一讲所说,为”Path”添加一行值。

首先,我们需要找到Chrome的安装位置,最为简单的办法是,在桌面找到Google Chrome的快捷方式,右键选择”打开文件所在的位置“,就能打开了。比如我这里打开的路径为C:Program Files (x86)GoogleChromeApplication,那么我就将这个路径添加到Path里。然后,需要我们将下载的ChromeDriver解压到exe程序,将单独的exe程序复制到刚才这个路径里,如下图所示:

借用爬虫代理来抓取商品信息


到这里,ChromeDriver便完成了安装,我们可以在命令行输入命令python,进入到python交互环境进行测试,如下图所示:


借用爬虫代理来抓取商品信息


如果你的谷歌浏览器自动打开,并且跳转到百度首页,那么Congratulations~

以某宝某只松鼠店铺为例爬取”坚果炒货”的商品名称、价格、销量以及评论数量

该页面的URL为:https://sanzhisongshu.tmall.com/category-1124487841.htm?spm=a1z10.1-b-s.w5003-17763072511.42.6995d6732XB8Of&tsearch=y&scene=taobao_shop#TmshopSrchNav

老规矩,先放一段代码:

借用爬虫代理来抓取商品信息

注释1:实例化了一个webdriver的Chrome对象,命名为driver,这时会有一个Chrome窗口自动打开。

注释2:调用了driver的maximize_window()方法,直接翻译就是最大化窗口,也就是这个功能,这句写不写不重要,作者写只是觉得看的清楚点。

注释3:调用了driver的get()方法,以get方式请求URL。

注释4:这里开始是重点,webdriver主要有八种查找元素的方式,这一行是采用class_name的形式进行查找,并且注意到elements这里的复数,这个方法用来查找页面上所有的符合条件的元素,如果是没有s的方法就只能找到首个符合条件的元素,这一行是使用谷歌开发者工具的左上角小箭头工具对元素进行审核,并找出所有的商品条目,其中一个条目范围如下图所示:

借用爬虫代理来抓取商品信息

注释5:同注释4,但这里采用的是css_selector,即css选择器的方式进行查找,因为这里的类名”item-name J_TGoldData”是个复合结构,而find_element_by_class_name()方法不支持复合结构的查找,所以只能采用css_selector这种方式。

注释6:同注释4,这里是单数,即在一个商品条目的范围内查找一次。

注释7:同注释6。

注释8:同注释4,但这里采用的是xpath的方式查找。

XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。XPath基于XML的树状结构,有不同类型的节点,包括元素节点,属性节点和文本节点,提供在数据结构树中找寻节点的能力。起初 XPath 的提出的初衷是将其作为一个通用的、介于XPointer与XSLT间的语法模型。但是 XPath 很快的被开发者采用来当作小型查询语言。(解释来自:百度百科 – “XPath”,若链接失效请访问:https://baike.baidu.com/item/XPath/5574064?fr=aladdin)

获得元素xpath的方法有几种,最为简单的一种,即在谷歌开发者工具面板上选择要查找的元素,右键选择Copy -> Copy XPath,如下图所示:

借用爬虫代理来抓取商品信息


当然这种方式可能存在缺陷,即获得的XPath可能过于繁琐,也可能获取的XPath无法正确查找到相应的元素,这都需要手动的依据XPath的语法去修改。

注释9:最后一定要记得关闭实例化的对象,这时候由程序打开的浏览器也会随之关闭。

这个例子最后的结果如下图:

借用爬虫代理来抓取商品信息

大家依然可以自由的选择数据存储方式。

这里要注意的是:使用selenium进行数据爬取相比前面的API请求法可能会慢的多,在打开到对应的窗口后,也可能窗口很长时间没有任何动作,但这不一定是出错或者是程序卡死的表现,也可能是程序在疯狂的查找网页元素,在这个过程中,如果不确定是否出错,请最好不要进行其他操作,避免有些时候造成元素失去焦点,导致莫名的错误。

当然了,selenium的功能远不止如此,几乎人能在网页上做出的行为,它都能模拟,包括点击、输入等各种行为,这个比较适用于某些网站要填写验证码的情况,更多有趣的内容大家可以自行发现.

综上,借用爬虫代理来抓取商品信息,虽然是必备的,但是其他的一些反反爬虫技术也是要具备的。

相关文章内容简介
推荐阅读
  • 16 2020-04
    使用高匿代理IP安全吗

    网络时代,信息非常容易被泄露,商家很容易就收集到我们的个人信息,消费习惯等等,这对我们的生活也有一定的影响,那么,我们使用高匿代理IP安全吗?请看小编来为大家分析。

  • 18 2019-05
    普通匿名代理和高匿名代理风险不一样

    普通匿名代理和高匿名代理风险不一样,虽然二者同为匿名代理,但是从“普通”和“高”这形容词就可以看出来,二者是有区别的,区别在哪里呢?

  • 29 2019-10
    HTTP代理全面介绍

    HTTP代理作为代理IP服务最常用的一种方式,你对这种代理了解多少?机灵代理下面跟大家介绍HTTP代理的使用过程,以及在选择的时候,要注意什么方面。

  • 16 2019-04
    【图文教程】浏览器快速设置ip代理

    有浏览器快速设置ip代理的图文教程么?本来还好好的上着网,突然间就显示“网页无法显示”,这是怎么回事?是不是IP被封了,需要设置代理IP上网?设置代理IP的方法有?

  • 03 2019-12
    Scrapy下载器中间件设置代理IP步骤

    如何在Scrapy下载器中间件实现随机请求头以及设置代理IP使用?要实现这一操作,我们总共需要完成3个步骤,下面跟着机灵代理来一起学习吧。

  • 22 2019-10
    代理IP的微博涨粉妙招

    经常看到微博大V在做广告,发现有一些号其实粉丝只到几十万也可以接到广告,而且一到有大型活动,商家会买一系列的大号来帮忙发推广。想要成为微博大V赚钱?代理IP先教你涨粉技巧。

在线咨询
大客户经理
大客户经理
1829380381
13316264505

大客户经理微信

微信公众号

微信公众号

回到顶部