爬虫—用Xpath爬取当当网图书信息

我就在这里,不离不弃

——A·May

R-98 |T-135

上次说到,当当网是一个练习爬虫的好地方,今天用Xpath解析网页,爬取图书信息。

那Xpath和CSS有什么不同呢?

可以把Xpath和CSS分别看做内燃机和蒸汽发动机,两者的作用是一样的,都是用来提供动力的,Xpath和CSS都是用来解析html文档的。但是,两种发动机的运行原理是不一致的,正如Xpath和CSS的语法是不一致的。

Xpath爬取第一步

写出正确的请求,GET或者POST,现在网站GET请求多一些,这点其实和昨天CSS的语法不一样,昨天不用做请求,直接写出html_nodes就好。而用Xpath不做请求,还是不行的。

在网页中找到对应的Refer和User-Agent,如下:

#在Values中检查相应的值

Xpath爬取第二步

通过网页的小箭头找到书的名称的路径,如下:

Xpath爬取第三步

找到以后,在R中写出相应的Xpath的路径,如下:

对应网页的中的路径

author2在网页中的路径是这样的,如下。我只写了一个节点代码,相比于昨天的CSS语句容易太多了。其中,div是节点名,div后面的class是div的一个属性值,我们可以发现网页中有许多的div,但是class=title的却只有书的标题。所以在这里,我们写出div,然后用[]写出这div的class属性,这样R就知道,我想要的这个书名了,其他的author、o_price和des可以套用,就是将class后面的属性名换掉就可以。

而关于img就不可以套用上面的格式了,为什么呢?

先看一下img的网页格式。一方面,img不和author他们一个父节点;另一方面,img节点是有两个。不是一个父节点,就需要重新确认需要哪个div节点,而img节点有两个,说明该节点下的内容需要限定,或者清洗。

但是,写路径的方式还是不变的,img的父节点可以用bookcover来限定class,然后,写出xmlGetAttr,"src",代表抓取src中的内容。

检查一下img的内容,发现连接中分成三组,1和3一类,5和其他连接也可以是一类,因为img是图片,说明除了我们要的书的封面之外,还有其他图片,就是那个推销图片,如下:

我们需要的是书的封面,所以需要对img进行一下清洗,操作如下,前两步是将另外两个的图片的连接都替换为0,然后在img中保留字符数大于1的字符串,这样0就都删除掉了。

数据整合

封面下载

封面的链接都爬下来了,顺便把图片也下载了,方法如下:

每天学习一点点,最后总会好的

我是May 明天见

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180327G0R02E00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券