我希望收集当地报纸的新闻文章。存档位于付费专区后面,我有一个付费帐户,如何自动输入我的凭据?
答案 0 :(得分:1)
您无法直接访问paywall后面的页面,因为该页面可能需要一些身份验证数据,如会话或Cookie。因此,您必须首先创建这些数据并将其存储,以便在您向安全页面传递请求时,您需要将数据作为请求的一部分,并且还具有身份验证会话数据。
要获取身份验证数据,您应首先抓取登录页面。获取会话信息,登录页面的cookie并将登录输入作为请求(基于表单操作类型获取或发布)传递到操作页面。一旦您将登录商店认证数据并使用它来刮取付费墙后面的页面。
答案 1 :(得分:1)
使用Scrapy(参见Tutorial)使用FormRequest通过HTTP POST发送数据(参见Example)
# Install scrapy : pip install Scrapy
# Create structure with : scrapy startproject my_project
# Create ./my_project/spiders/my_spider.py
# use something like this inside my_spider.py:
class LoginSpider(Spider):
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...