我是scrapy的新手,并在python 2.7中使用scrapy进行网络自动化。我想单击打开登录表单的网站上的html按钮。我的问题是我只想单击一个按钮,然后将控件转移到新页面。我已经阅读了所有类似的问题,但没有一个令人满意的,因为它们都包含直接登录或使用硒。
下面是按钮的HTML代码,我想访问有登录页面的http://example.com/login
。
<div class="pull-left">
<a href="http://example.com/login" class="emplink">Employers</a>
我已经编写了提取链接的代码。但是如何访问该链接并执行下一步。下面是我的代码。
import scrapy
class QuotesSpider(scrapy.Spider):
name = 'pro'
url = "http://login-page.com/"
def start_requests(self):
yield scrapy.Request(self.url, self.parse_login)
def parse_login(self, response):
employers = response.css("div.pull-left a::attr(href)").extract_first()
print employers
我是否需要每次都使用“ yield”并回调新功能以仅访问链接,否则还有其他方法可以使用。
答案 0 :(得分:2)
您需要的是发出一个新请求,或者像在docs中那样轻松地制作一个response.follow
:
def parse_login(self, response):
next_page = response.css("div.pull-left a::attr(href)").extract_first()
if next_page is not None:
yield response.follow(next_page, callback=self.next_page_parse)
关于回调,它基本上取决于页面的解析难度,例如,检查文档上的general spiders部分