[英]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。 如果后續頁面與該規則不匹配,則根本不會對其進行解析。
有兩種可能性:
在規則中設置follow == False,然后在parse_item函數中手動提取鏈接並創建Request對象。
優化allow參數和更多術語以匹配其他網址
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.