編寫spider爬取
阿新 • • 發佈:2017-08-30
ref 域名 oat response class 功能 遍歷 爬取 完成
改寫parse函數
實現功能:
1.獲取文章列表頁中的文章url並交給scrapy下載後,交給解析函數進行具體字段的解析
2.獲取下一頁的url並交給scrapy進行下載,下載完成後交給parse
提取一頁列表中的文章url
#解析列表頁中所有文章的url,遍歷出來 def parse(self, response): # 解析列表頁中的所有url並交給scrapy下載後進行解析 post_urls = response.css(‘#archive .floated-thumb .post-thumb a::attr(href)‘).extract() for post_url inpost_urls: print(post_url)
調試輸出結果
如何讓scrapy進行下載
引入request對象
from scrapy.http import Request
修改提取字段類類名為parse_detail,引入parse類進行域名拼接,yield下載
from urllib import parse
def parse(self, response): #獲取文章列表頁中的文章url並交給解析函數進行具體字段的解析 #獲取下一頁的url並交給scrapy進行下載,下載完成後交給parsepost_urls = response.css(‘#archive .floated-thumb .post-thumb a::attr(href)‘).extract() for post_url in post_urls: #yield Request(url=post_url,callback=self.parse_detail) yield Request(url=parse.urljoin(response.url, post_url),callback=self.parse_detail) #域名拼接 下載 下載完成後調用parse_detail解析字段
獲取下一頁並交給scrapy進行下載
#提取下一頁並交給scrapy下載 next_url = response.css(‘.next.page-numbers::attr(href)‘).extract_first("")#空格去掉表示同時擁有兩個屬性 if next_url: yield Request(url=parse.urljoin(response.url, next_url), callback=self.parse) #繼續調用parse解析出列表頁中具體文章的url
調試前修改start_url為all-posts
調試結果
編寫spider爬取