如何在付费墙后面刮一个网站

时间:2014-02-16 06:02:02

标签: python web-scraping

我希望收集当地报纸的新闻文章。存档位于付费专区后面,我有一个付费帐户,如何自动输入我的凭据?

2 个答案:

答案 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...