Scrapy模擬登入抓資料基本應用
阿新 • • 發佈:2019-02-10
# coding=utf-8 import scrapy from scrapy.selector import Selector class LoginSpidersPyw(scrapy.Spider): #scrapy crawl LoginSpiders 定義爬蟲的名稱 name = "LoginSpiders" #定義允許抓取的域名,如果不是在此列表的域名則放棄抓取 allowed_domains = ['pyw.cn'] #登入網址 LoginUrl="http://v.pyw.cn/login/index" #登入驗證介面 LoginCheckUrl="http://v.pyw.cn/login/check" #所要爬取的網址 start_urls=["http://v.pyw.cn/Data/accountdetail/1", "http://v.pyw.cn/Data/accountdetail/2", "http://v.pyw.cn/Data/accountdetail/3", "http://v.pyw.cn/Data/accountdetail/4"] #登入資料:使用者名稱、使用者密碼、是否記住使用者名稱 formdata = { "username": "15880xxxxxx", "password": "a123456", "remember": "1" } #記錄當前屬於第幾筆記錄,累計 PageIndex=0 #重寫爬蟲類:載入登入頁面,並回調post_login登入提交資料 def start_requests(self): return [scrapy.Request( url=self.LoginUrl, meta={'cookiejar': 1}, callback=self.post_login)] #執行提交所要登入的資料資訊, def post_login(self,response): #驗證登入 return [scrapy.FormRequest.from_response(response, url=self.LoginCheckUrl, meta={'cookiejar': response.meta['cookiejar']}, formdata=self.formdata, callback=self.after_login, method="POST" )] #登入成功後呼叫所要爬取的網址,start_urls中的網址逐一爬取 def after_login(self,response): for u in self.start_urls: yield scrapy.Request(url=u, meta={'cookiejar': response.meta['cookiejar']}, callback=self.parse_details ) #爬取對應的頁面資訊,單頁資訊 def parse_details(self,response): #選擇當前頁面的所有資訊 sel=Selector(response) #解析出table中的所有tr trItems=sel.xpath('//table[@class="table fn-mt-20"]//tr') #解析tr中的所有資料 for tr in trItems: self.PageIndex = self.PageIndex + 1 print "===No." + str(self.PageIndex)+"==" tdItems = tr.xpath('//td/text()') print tdItems[0].extract().strip() print tdItems[1].extract().strip() print tdItems[2].extract().strip() print tdItems[3].extract().strip() print tdItems[4].extract().strip() print tdItems[5].extract().strip() print tdItems[6].extract().strip() print tdItems[7].extract().strip() print tdItems[8].extract().strip() pass