對應的是spiders下的文件css
___ init __:初始化爬蟲列表,start_urls列表html
start_requests:生成requests對象交給scrapy下載器返回responsenode
parse:根據返回的response解析出相應的item,item自動進入pipeline:若是須要,解析出url,url自動交給requests模塊,一直循環下去、mysql
start_request:此方法只能被調用一次,讀取start_urls內容並啓動循環過程sql
name:設置爬蟲名稱,是一個標識shell
start_urls:設置開始的第一批爬蟲的url,一般被實現成一個列表數據庫
class Spider(object_ref): ... def start_requests(self): for url in self.start_urls: yield self.make_requests_from_url(url)api
def make_requests_from_url(self, url):
return Request(url, dont_filter=True)
def parse(self, response):
raise NotImplementedError
...
複製代碼
allow_domains:spider容許爬取的域名列表瀏覽器
start_request(self):只被調用一次緩存
parse
log:日誌記錄
中間件是處於引擎和下載器中間的一層組件
能夠有不少個,按順序加載執行
做用是對發出的請求和返回的結果進行預處理
在middlewares文件中
須要在settings中設置以便生效
編寫中間件,必須是scrapy,contrib,Downloadermiddlewar的子類
通常一箇中間件完成一項功能
必須實現如下一個或者多個方法
去重
myspider(scrapy.spider) def parse(……): …… yield screapy.Request(url=url,callback=self.parse,dont_filter=False)
如何在scrapy使用selenium
class MyMiddleWare(object): def process_request(……): driver = wedriver.Chrome() html = driver,page_source driver.quit() return HtmlResponse(url=url,encoding='utf_8',ody=html,request=request)