scrapy爬蟲初體驗
阿新 • • 發佈:2017-11-01
title 回調函數 res log 令行 nbsp esp code extra
import scrapy class StackOverflowSpider(scrapy.Spider): name="stackoverflow" start_urls=["http://stackoverflow.com/questions?sort=votes"] def parse(self,response): for href in response.css(‘.question-summary h3 a::attr(href)‘): #得到爬取的地址 full_url=response.urljoin(href.extract())yield scrapy.Request(full_url,callback=self.parse_question) def parse_question(self,response): yield{ ‘title‘:response.css(‘h1 a::text‘).extract()[0], ‘votes‘:response.css(".question .vote-count-post::text").extract()[0], ‘body‘:response.css(".question .post-text").extract()[0], ‘tags‘:response.css(‘.question .post-tag::text‘).extract(), ‘link‘:response.url, }
命令行運行代碼 scrapy runspider 文件名.py -o 存儲文件名.csv
1.在xx.py文件中找到已定義的爬蟲,然後通過抓取引擎運行爬蟲
2.具體的抓取過程:
1)使用start_urls作為初始url生成Request,並默認把parse作為它的回調函數。
2)在parse中采用css選擇器獲得目標的URL,並註冊parse_question作為目標URL的回調函數
背後的處理:
1.請求被異步的調度,處理。
2.有一些參數可以控制過程,比如每個域名/ip的並發請求數,請求直接的下載延遲(或者自動調節)
scrapy爬蟲初體驗