簡體   English   中英

帶有身份驗證的基本Scrapy Spider

[英]Basic Scrapy Spider with Authentication

我是python的新手,scrapy以及不是shell腳本的所有東西。

就是說,我正在嘗試編寫一個從Etsy商店獲取客戶信息的刮板。

到目前為止,我已經寫了:

from scrapy.spiders import BaseSpider, CrawlSpider, Rule
from scrapy.http import FormRequest
from loginform import fill_login_form
from scrapy.selector import HtmlXPathSelector
from scrapy.linkextractors.sgml import SgmlLinkExtractor

class LoginSpider(BaseSpider):
    name = "etsy"
    allowed_domains = ["etsy.com"]
    start_urls = ["https://www.etsy.com/signin"]
    login_user = "myuname"
    login_pass = "mypass"

    rules = (Rule(SgmlLinkExtractor(allow=("/your/orders/sold",))
    , callback="parse_items", follow=True),
    )

    def parse(self, response):
        args, url, method = fill_login_form(response.url,response.body,self.login_user, self.login_pass)
        return FormRequest(url, method=method,formdata=args,callback=self.parse_item)

    def after_login(self, response):
        if "avorites" in response.body:
            print 'logged in'
        else:
            print 'not logged in'
        return

    def parse_item(self, response):
#TBD

我遇到的問題是,我在parse_item中放入的任何內容都將在登錄后簡單地解析第一頁,但是此后則不解析任何內容。

我敢肯定,我確實缺少一些基本知識,但其中沒有一個例子能真正說明如何通過身份驗證構造事物,然后在身份驗證之后進行爬網。 我顯然可以遵循這些教程,並且可以獨立完成每個教程,但我不確定如何組織事物以便它們可以一起登錄,然后瀏覽/ your / orders / sold下的所有頁面。

即使有人可以指出一個可行的例子,這也將非常有用。

規則僅將具有確切路徑'/ your / orders / sold'的網址分配給parse_item。 如果后續頁面與該規則不匹配,則根本不會對其進行解析。

有兩種可能性:

  1. 在規則中設置follow == False,然后在parse_item函數中手動提取鏈接並創建Request對象。

  2. 優化allow參數和更多術語以匹配其他網址

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM