如何进行表单登录,然后使用scrapy处理该会话?
例如考虑一个具有登录身份验证的网站,它有三个与登录会话链接的不同页面。 因此,使用scrapy,首先登录然后在主页中搜索一些,然后按照主页中的特定链接,点击链接并从该页面中删除。然后再回到主页,再按照其他链接等等。 我有一个文件ccbank_spider.py,下面是内容
class LoginSpider(BaseSpider):
#some code
#for hitting and parsing of the Account URL
for accountURL in (strip(s) for itemArr in items for s in itemArr['accountURL']):
print accountURL
yield request(accountURL, callback=self.account_transactions)
def account_transactions(self, response):
print 'print text'
return None
我收到以下错误
File "D:\NextGen\workspace\tutorial\tutorial\spiders\ccbank_spider.py", line 45, in after_login
yield request(accountURL, callback=self.account_transactions)
exceptions.TypeError: 'module' object is not callable
答案 0 :(得分:0)
这是关于您的第一个问题(登录)的文档:
class LoginSpider(BaseSpider):
name = 'example.com'
start_urls = ['http://www.example.com/users/login.php']
def parse(self, response):
return [FormRequest.from_response(response,
formdata={'username': 'john', 'password': 'secret'},
callback=self.after_login)]
def after_login(self, response):
# check login succeed before going on
if "authentication failed" in response.body:
self.log("Login failed", level=log.ERROR)
return
# continue scraping with authenticated session...
至于你问题的其他部分,你可以抓取你想要的所有链接,也可以填写主页,并为每个新请求做:
request = Request(url_to_scrape, callback=self.parse_item)
request.meta['language'] = "eng"
yield request
然后你在这个exaxmple中解析parse_item中的那个页面,你也可以发送元信息给你。