scrapy網頁跳轉後進行資料爬取
阿新 • • 發佈:2018-12-20
因為一開始的網站爬取的是一個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的原理也類似