【问题标题】:Crawling a social network in python在 python 中爬取社交网络
【发布时间】:2015-10-09 00:59:15
【问题描述】:

我想编写一个 python 脚本来爬取一个社交网络网站。脚本的目的应该是检索社交图(友谊关系)的一部分。

该网站不提供任何 API。

问题是:我如何在 python 中抓取一个假装登录会话来访问联系人页面的网站(例如,http://www.anobii.com/junemiller/friends)? 好吧,我有我的登录名\密码,我会用它来登录和检索,但我不知道如何使用它通过 python 登录以建立会话来访问页面。关于 python 模块或方法的任何建议?

谢谢, 雅各布

【问题讨论】:

    标签: python session networking social web-crawler


    【解决方案1】:

    您也可以使用 Scrapy,它已经处理了 cookie 和网络会话。

    在官方文档中有一个如何进行登录的例子: http://doc.scrapy.org/en/stable/topics/request-response.html?highlight=request#using-formrequest-from-response-to-simulate-a-user-login

    Scrapy 是使用Asynchronous IO 实现的,因此它应该比 Mechanize 或 twill 更快。

    【讨论】:

      【解决方案2】:

      首先,您应该检查社交网络是否提供了执行此操作的 API。此外,请检查服务条款是否允许您做的事情,否则您将面临被阻止/禁止的风险。

      如果没有 API 并且允许您以这种方式抓取系统,请使用 mechanizetwill 等工具来模拟浏览器/cookie/会话行为并提供适当的抓取。

      或者,使用 lxml.htmlurllib2cookielib 模块等自行实现。

      【讨论】:

      • 伊沃,感谢您的回答。好吧,我忘了指定没有 API,所以我必须模拟浏览器/cookie/会话行为。
      【解决方案3】:

      您应该调查Mechanize。来自文档:

      在 Andy Lester 的 Perl 模块 WWW::Mechanize 之后,使用 Python 进行有状态的编程网页浏览。

      您也可以使用 urllib2 和其他内置 Python 模块自行开发。

      作为@Ivo said,请先检查网站是否有API 可以为您执行此操作。例如,Facebook 的 Graph API 几乎可以完成您所描述的工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-10
        • 2011-05-08
        相关资源
        最近更新 更多