1. 程式人生 > >scrapy爬蟲初體驗

scrapy爬蟲初體驗

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爬蟲初體驗