【问题标题】:Establishing session with web app to crawl与 Web 应用建立会话以进行爬网
【发布时间】:2013-05-02 14:57:36
【问题描述】:

我打算用 Python 编写一个网站爬虫,使用 Requests 和 PyQuery。

但是,我所定位的网站要求我登录自己的帐户。使用请求,我是否可以与服务器建立会话(使用我的站点凭据),并使用此会话来抓取我只有在登录时才能访问的站点?

我希望这个问题很清楚,谢谢。

【问题讨论】:

  • 当然可以。 requests 本身有很多方法可以做到这一点,如果不支持,您也可以编写自己的身份验证方法。见docs.python-requests.org/en/latest/user/authentication
  • 绝对有可能,但只要准备好让网站将您踢出并可能会在他们抓住您时删除您的帐户。根据服务条款和您正在翻录的信息的价值,该网站可能对此不太满意。该网站可能会记录用户活动,并且很容易发现爬虫(尽管实际上很少有网站在寻找它)

标签: python web-crawler python-requests httpsession


【解决方案1】:

是的,这是可能的。

我不了解 PyQuery,但我制作了使用 urllib2 登录网站的爬虫。 您只需要使用 cookiejar 来处理 cookie 并使用请求发送登录表单。

如果你问更具体的问题,我也会尽量说得更明确。

乐: urllib2 不是一团糟。在我看来,这是处理此类事情的最佳库。

这是一个将登录到站点的代码片段(之后您可以正常解析该站点):

import urllib
import urllib2
import cookielib

"""Adding cookie support"""
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)

"""Next we will log in to the site. The actual url will be different and also the data.
You should check the log in form to see what parameters it takes and what values.

"""
data = {'username' : 'foo',
        'password' : 'bar'
       }
data = urllib.urlencode(data)
urllib2.urlopen('http://www.siteyouwanttoparse.com/login', data) #this should log us in

"""Now you can parse the site"""
html = urllib2.urlopen('http://www.siteyoutwanttoparse.com').read()
print html

【讨论】:

  • 感谢您提供此信息。理想情况下,我正在寻找的是一个 Python Requests sn-p 来执行相关的 cookie/会话处理。我想避免使用 urllib2,因为它有点乱..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多