實驗?zāi)康模?/h2>
本次試驗?zāi)康臑檎莆栈镜木W(wǎng)站信息爬取技巧蹦肴,主要是使用CSS selector和xpath來進行網(wǎng)頁元素定位。
實驗要求:
使用CSS selector和xpath爬取豆瓣圖書250的關(guān)鍵信息
實驗工具:
Centos2.7惕澎;Python3;xftp;xshell;scrapy 框架
實驗分工:
本次作業(yè)由小組成員相互討論悄泥,各自進行獨立實驗并相互交流問題;最后由胡云撰寫實驗報告肤粱。
實驗過程:
1.進入Linux操作系統(tǒng)
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('評價人數(shù):',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.爬取的內(nèi)容格式不對,無法很好地完成for循環(huán)問題
原因在于縮進格式不對狼犯,改了之后就達成目標(biāo)
爬取結(jié)果截圖:
導(dǎo)出為json文件格式截圖: