从Facebook搜集团体头衔

时间:2015-04-27 15:43:37

标签: python facebook web-scraping

我正在尝试从此页面获取一些信息: https://www.facebook.com/groups/574916095895510/?fref=ts

单击“全部查看”时,将显示成员列表。我想获得以下文字:“加州大学洛杉矶分校2018年官方团体成员”。

但是,当我尝试从XPath打印文本时出现以下错误:

Traceback (most recent call last):
    File "scraper.py", line 35, in <module>
        print title.text()
AttributeError: 'NoneType' object has no attribute 'text'

当我将会话转储为图像时,标题是可见的,所以我知道该文本可用于抓取。

这是我的完整代码:

import time
import dryscrape
import json
import ast

username = 'USERNAME'
password = 'PASSWORD'

# set up a web scraping session
sess = dryscrape.Session(base_url = 'https://www.facebook.com/')

# visit homepage and log in
print "Logging in..."
sess.visit('/login.php?next=https%3A%2F%2Fwww.facebook.com%2Fgroups%2F574916095895510%2F%3Ffref%3Dts')

# Set username and password
username_field = sess.at_css('#email')
password_field = sess.at_css('#pass')
username_field.set(username)
password_field.set(password)

# Submit the form
username_field.form().submit()

# Wait
time.sleep(3)

print "Viewing all members..."
see_all_button = sess.at_xpath('//*[@id="pagelet_group_profile_members"]/div/div/div/div[1]/div/a')
see_all_button.click()

time.sleep(3)

title = sess.at_xpath('//*[@id="u_z_0"]/div/div[1]/h3')
print title.text()

sess.render('fb.png')

1 个答案:

答案 0 :(得分:1)

您不应该从Facebook中删除数据。 Facebook通过其API提供您所有的数据需求。

您可以在此处找到其文档中的任何组信息。这比刮擦更清洁,如果你想在将来使用它,它将被维护。 :)

https://developers.facebook.com/docs/graph-api/reference/v2.3/group

我做了大量的抓取工作,这似乎不是一个很好的抓取用例 - 使用API​​!