1. 程式人生 > 實用技巧 >爬蟲-Scrapy(三) 翻頁的實現

爬蟲-Scrapy(三) 翻頁的實現

1.翻頁的實現

上一篇實現了單頁的爬取,再加3行程式碼就可以實現翻頁了。

基本思路是查詢頁面中‘下一頁’按鈕對應的href地址,然後回撥parse方法實現迴圈,直至找不到'下一頁'的連結為止。

程式碼:

import scrapy
import re
from scpy1.items import Scpy1Item

class Qiubai1Spider(scrapy.Spider):
    name = 'qiubai1'
    allowed_domains = ['qiushibaike.com']
    start_urls = ['https://www.qiushibaike.com/text/
'] domain_url = 'https://www.qiushibaike.com' def parse(self, response): #獲取笑話列表 joke_list = response.xpath("//div[contains(@class, 'article block')]") #解析笑話內容 for joke in joke_list: # 解析作者、內容 author = joke.xpath("./div/a[2]/h2/text()").extract_first() content
= joke.xpath(".//div[@class='content']/span/text()").extract() # 封裝資料至item item = Scpy1Item() item['author'] = re.sub("[\n]", "", author) item['content'] = re.sub("[\n]", "", ','.join(content)) yield item ## 獲取下一頁url next_url = response.xpath("
//span[@class='next']/../@href").extract_first() # 找到按鈕'下一頁'的href ## 如果下一頁url存在, 回撥parse方法處理 if next_url: yield scrapy.Request(self.domain_url + next_url, callback=self.parse)

2.匯出到檔案

執行成功後,會發現item資料量比較多了,這次不再print ,而是把資料匯出至csv檔案檢視。 用到的命令是:

Scrapy crawl qiubai1 -o qiubai1.csv

匯出的中文是亂碼,這個時候需要改下settings.py 檔案,設定下匯出編碼

# Feed export encoding
FEED_EXPORT_ENCODING = 'gb18030'

網上可能有些寫utf-8的,不行的,我的都是自己測試過的。