1. 程式人生 > >scrapy網頁跳轉後進行資料爬取

scrapy網頁跳轉後進行資料爬取

因為一開始的網站爬取的是一個href,所以需要去跳轉一下,即發一個Request

<a href="https://XXX.com.cn/w/2018-11-24/doc-ihpevhck4340972.html">你好</a>

以下是自己的程式碼:

 

def parse(self, response):
    href_set = []
    list = response.xpath("//div[@style='display:none;']//li/a/@href").extract()    #獲取href
    for i in range(0, 50, 1):   # 留下前50條資料
        href_set.append(list[i])
    for href in href_set:
        yield scrapy.Request(url=href, callback=self.new_parse)
        #就是這個Request請求了一個新的url,完成之後回撥new_parse函式,進一步處理

def new_parse(self, response):
    myitem = TutorialItem()
    myitem['article_title'] = response.xpath("//h1[@class='main-title']/text()").extract()
    myitem['article_content'] = response.xpath("//div[@class='article']//p/text()").extract()
    # 獲取第一張圖片,可能無圖
    myitem['article_image'] = response.xpath("//div[@class='img_wrapper']//img/@src").extract_first()
    # 把自己的item丟擲給pipeline
    yield myitem

整體的思路就是通過parse的自動呼叫去獲得href,之後用Request請求獲取新網頁內容,進一步處理。

如果爬的網頁有 n 層href,那就呼叫 n 次Request,直到請求到自己想要獲得資料的網頁才進行爬取處理,不然就一直Request,進行跳轉訪問(我的只有一層href,即調一次href)

其實內建函式parse的原理也類似