您的位置:首页 > 新闻资讯 >文章内容
借用爬虫代理来抓取商品信息
来源:互联网 作者: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的功能远不止如此,几乎人能在网页上做出的行为,它都能模拟,包括点击、输入等各种行为,这个比较适用于某些网站要填写验证码的情况,更多有趣的内容大家可以自行发现.

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

相关文章内容简介
推荐阅读
  • 25 2019-12
    爬虫ip被封锁如何处理?

    爬虫ip被封锁如何处理?网络爬虫,是一种自动获取网页内容的程序。是搜索引擎的重要组成部分,因此搜索引擎优化很大程度上就是针对爬虫而做出的优化。你知道爬虫ip被封锁如何处理吗?接下

  • 29 2020-06
    如何使用HTTP代理IP

    HTTP代理网络服务器处于客户机和集群服务器,既能向网络服务器提供各式各样服务乞求,又能接受客户机明确指出的申办并提供相对性的服务。因此,从云服务器角度看,HTTP代理网络服务器是

  • 22 2019-02
    什么是HTTP代理

    大家对HTTP代理应该都非常熟悉,它在很多方面都有着极为广泛的应用。HTTP代理分为正向代理和反向代理两种,后者一般用于将防火墙后面的服务提供给用户访问或者进行负载均衡

  • 22 2019-03
    一个免费的异步爬虫代理池

    由于网络流量不断增加,而且恶意爬虫遍地,许多网站为了保护自己都设置了大量的反爬虫。对面日益增加的反爬虫技术,网络爬虫要想突破,必须要借用各种的工具,比如代理IP。对于爬虫来

  • 11 2019-01
    哪些语言可以写网络爬虫?Scrapy框架值得作为第一选择

    在这个大数据时代,许多企业都使用网络爬虫来采集信息,这网络爬虫可以使用语言来编写呢?哪一个语言编写网络爬虫的效果最好?现在的编程语言可不少,比如Python、PHP、c#和Java等的,最常

  • 08 2020-06
    代理IP软件有什么益处

    代理IP软件是很多网络工作者的必备工具,例如网络推广、注册、爬虫等等。代理IP深受很多用户的欢迎,但还有很多用户对其不是很了解。那么,代理IP软件有什么益处?

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

大客户经理微信

微信公众号

微信公众号

回到顶部