csc*_*lin 7 python facebook mechanize beautifulsoup web-scraping
我已经尝试了几天(不成功)从大约500个Facebook URL中删除城市.然而,Facebook以一种非常奇怪的方式处理其数据,我无法弄清楚幕后发生了什么,以了解我需要做什么.
基本上问题是Facebook显示的数据量非常不同,具体取决于登录的人以及帐户的隐私设置.例如,尝试在登录Facebook的浏览器和不登录Facebook的浏览器中打开以下三个链接:
如您所见,Facebook在第一个链接的两种情况下都会加载数据,但只有在您登录后才能获取第二个链接的数据(到任何帐户).第三个链接在您登录时显示城市,但仅在您不登录时显示其他信息.
这是非常有问题的(并且与Python相关)的原因是当尝试使用Beautiful Soup或Mechanize来抓取页面时,我无法弄清楚如何让程序"假装"我登录到一个帐户.这意味着我可以轻松地从第一类链接(其中少于10个)中获取数据,但是我无法将城市从第二种或第三种类型中移除.到目前为止,我已经尝试了许多解决方案但收效甚微.
下面是一些适用于第一种类型的示例代码,但不适用于其他类型:
import mechanize
import re
import csv
user_info = []
fb_url = 'http://www.facebook.com/100004210542493'
br = mechanize.Browser()
br.set_handle_robots(False)
br.open(fb_url)
all_html = br.response().get_data()
print all_html
city = re.search('fsl fwb fcb">(.+?)</a></div><div class="aboutSubtitle fsm fwn fcg', all_html).group(1)
user_info = [fb_url, city]
print user_info
Run Code Online (Sandbox Code Playgroud)
我也有一个使用Beautiful Soup的版本.如果有人对如何解决这个问题有任何想法,我将非常感激.谢谢!
Jam*_*son 13
在正确的做到这一点的方法是使用Facebook的API.出于各种商业,安全和隐私原因,他们会尽力使抓取数据变得棘手.
如果您坚持抓取,我会尝试首先使用mechanize登录以提交表单.我从来没有试过用Facebook做这个,但很多网站都更容易解析m.site.com上针对移动用户的版本.
| 归档时间: |
|
| 查看次数: |
42321 次 |
| 最近记录: |