scrapy框架爬取豆瓣讀書(1)
阿新 • • 發佈:2018-10-05
tin rap 豆瓣 pipe 網頁 xpath from lin tor
1.scrapy框架
Scrapy,Python開發的一個快速、高層次的屏幕抓取和web抓取框架,用於抓取web站點並從頁面中提取結構化的數據。Scrapy用途廣泛,可以用於數據挖掘、監測和自動化測試。
Scrapy吸引人的地方在於它是一個框架,任何人都可以根據需求方便的修改。它也提供了多種類型爬蟲的基類,如BaseSpider、sitemap爬蟲等,最新版本又提供了web2.0爬蟲的支持。
主要組件:
2.快速開始
scrapy startproject douban
cd到douban根目錄下執行 scrapy genspider Douban book.douban.com
原網頁結構
3.xpath提取
xpath是基於XML的樹狀結構,有不同類型的節點,包括元素節點,屬性節點和文本節點,提供在數據結構樹中找尋節點的能力。
xpath初探:
提取書籍排行榜圖片鏈接,以備後續保存
提取作者,所在地區
4.Douban.py代碼
import scrapy from douban.items import DoubanBookItem class BookSpider(scrapy.Spider): name = 'douban-book' allowed_domains = ['douban.com'] start_urls = [ 'https://book.douban.com' ] def parse(self, response): # 請求第一頁 yield scrapy.Request(response.url, callback=self.parse_next) #爬取其他頁面 for page in response.xpath('//div[@class="paginator"]/a'): link = page.xpath('@href').extract()[0] yield scrapy.Request(link, callback=self.parse_next) def parse_next(self, response): for item in response.xpath('//tr[@class="item"]'): book = DoubanBookItem() book['name'] = item.xpath('td[2]/div[1]/a/@title').extract()[0] book['content'] = item.xpath('td[2]/p/text()').extract()[0] book['ratings'] = item.xpath('td[2]/div[2]/span[2]/text()').extract()[0] yield book
5.明天繼續更新items.py、pipelines(管道數據流)、middlewaares(中間件)編寫
scrapy框架爬取豆瓣讀書(1)