在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ crawlspider登錄后,無法在首頁進(jìn)行爬蟲

crawlspider登錄后,無法在首頁進(jìn)行爬蟲

按照網(wǎng)上大神的例子,寫了一個(gè)crawlspider的爬蟲,但是運(yùn)行到其中make_requests_from_url后,就直接結(jié)束了,最后的parse_page沒有運(yùn)行,問一下是啥原因啊。

class w3spider(CrawlSpider):

name = "w3"
allowed_domains = ['xxx.com']
start_urls = ["http://w3.xxx.com/next/indexa.html"]
rules = (
    Rule(LinkExtractor(allow=("viewDoc.do\?did=\d.*&cata\=.*")), callback='parse_page', follow=True),
)

def start_requests(self):
    return [Request("https://login.xxx.com/login/", meta={"cookiejar": 1}, callback=self.post_login)]

def post_login(self, response):
    formdate = {
        "actionFlag": "loginAuthenticate",
        "lang": "en",
        "loginMethod": "login",
        "loginPageType": "mix",
        "redirect": "http%3A%2F%2Fw3xxx.com%2Fnext%2Findexa.html",
        "redirect_local": "",
        "redirect_modify": "",
        "scanedFinPrint": "",
        "uid": "hwx371981",
        "password": "QWER1234%^&*",
        "verifyCode": "2345",
    }
    return [FormRequest.from_response(response,
                                      meta={'cookiejar': response.meta['cookiejar']},
                                      formdata=formdate,
                                      callback=self.after_login,
                                      dont_filter=True)]

def after_login(self, response):
    print(response.text)

    for url in self.start_urls:
        print(url)
        yield self.make_requests_from_url(url)
        print(url)

def parse_page(self, response):
    print(response.url)




http://w3.huawei.com/next/ind...
2017-11-23 09:31:07 [scrapy.extensions.logstats] INFO: Crawled 2 pages (at 2 pages/min), scraped 0 items (at 0 items/min)
http://w3.huawei.com/next/ind...
2017-11-23 09:31:14 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://w3.huawei.com/next/ind...; (referer: None)
2017-11-23 09:31:14 [scrapy.core.engine] INFO: Closing spider (finished)

可以看到2個(gè)print(url)都運(yùn)行了,yield也運(yùn)行了,但是最后的parse_page函數(shù)沒有運(yùn)行。

另外不明白的是for url in self.start_urls,這句里的start_urls就是http://w3.xxx.com/next/indexa...,為什么要循環(huán)?

回答
編輯回答
淺淺

yield語句改成:

yield Request(url, callback=self.parse_page)

另外,注意self.start_urls是一個(gè)列表。
————分割線————
我仔細(xì)看了下crawlspider的源碼,你的代碼沒有問題。問題很可能出在你的正則表達(dá)式上,應(yīng)該使用非貪婪匹配.*?

2017年9月20日 01:53
編輯回答
眼雜

這樣最后的parse_page運(yùn)行了,但是不會(huì)用rules去循環(huán)爬蟲

2017年7月31日 05:41