实验目的:
本次试验目的为掌握基本的网站信息爬取技巧,主要是使用CSS selector和xpath来进行网页元素定位。
实验要求:
使用CSS selector和xpath爬取豆瓣图书250的关键信息
实验工具:
Centos2.7;Python3;xftp;xshell;scrapy 框架
实验分工:
本次作业由小组成员相互讨论,各自进行独立实验并相互交流问题;最后由胡云撰写实验报告。
实验过程:
1.进入Linux操作系统
2.输入scrapy shell 'https://book.douban.com/top250?icn=index-book250-all'
3.输入代码开始爬取
具体代码如下:
爬取代码:
CSS:
for book in response.css("div.indent table"):
pic=book.css("td a img::attr(src)").extract()
title=book.css("div.pl2 a::text").extract()
author=book.css("p.pl::text").extract()
title2=book.css("div.pl2 span::text").extract()
score=book.css("div>span.rating_nums::text").extract()
comm_num=book.css("div>span.pl::text").extract()
quote=book.css("td p.quote span.inq::text").extract()
print('书名:',title),
if title2:
print('别名:',title2)
print('图片:',pic),
print('作者及其他信息:',author),
print('评分:',score),
print('评价人数:',comm_num),
print('名言:',quote)
XPath:
for i in response.xpath('//div[@class="indent"]/table'):
item = HomeworkItem()
item['image'] = i.xpath('.//img/@src').extract_first()
item['title'] = i.xpath('.//div[@class="pl2"]/a/text()').extract_first().strip()
item['E_title'] = i.xpath('.//div[@class="pl2"]/span/text()').extract()
item['publish'] = i.xpath('.//p[@class="pl"]/text()').extract()
item['score'] = i.xpath('.//div[@class="star clearfix"]/span[@class="rating_nums"]/text()').extract()
item['commentnum'] = i.xpath('.//div[@class="star clearfix"]/span[@class="pl"]/text()').extract_first().strip('()\n ')
item['quote'] = i.xpath('.//p[@class="quote"]/span/text()').extract()
yield item
爬取过程中遇到的问题:
1.爬取过程中遇到403forbidden,被禁止爬取
解决方法:将USER_AGENT改为:USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'
2.爬取的内容格式不对,无法很好地完成for循环问题
原因在于缩进格式不对,改了之后就达成目标
爬取结果截图:
导出为json文件格式截图: