我正在尝试从此页面获取一些信息: 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')
答案 0 :(得分:1)
您不应该从Facebook中删除数据。 Facebook通过其API提供您所有的数据需求。
您可以在此处找到其文档中的任何组信息。这比刮擦更清洁,如果你想在将来使用它,它将被维护。 :)
https://developers.facebook.com/docs/graph-api/reference/v2.3/group
我做了大量的抓取工作,这似乎不是一个很好的抓取用例 - 使用API!