为了概述这个问题,我有一个Twitter用户列表“screen_names”,我想验证他们是否是被暂停的用户。我不想使用twitter搜索API来避免速率限制问题(列表非常大)。因此,我正在尝试使用一组计算机来标记我的数据集(我的数据库中的帐户是否已暂停)。
如果某个帐户被Twitter暂停,并且您尝试通过链接http://www.twitter/screen_name
访问该帐户,则会重定向到https://twitter.com/account/suspended
我尝试使用urlib
方法使用python 2.7与geturl()
捕获此行为。它工作但不可靠(我在同一个链接上得不到相同的结果)。我在同一帐户上对其进行了测试,但有时会返回https://twitter.com/account/suspended
,有时会返回http://www.twitter/screen_name
请求也会出现同样的问题。
我的代码:
import requests
from lxml import html
screen_name = 'IaMaGuyGetIt'
account_url = "https://twitter.com/"+screen_name
url = requests.get(account_url)
print url.url
req = urllib.urlopen(url.url).read()
page = html.fromstring(req)
for heading in page.xpath("//h1"):
if heading.text == 'Account suspended':
print True
答案 0 :(得分:1)
Twitter服务器只为您提供302重定向一次;之后,它会假设您的浏览器缓存了重定向。
页面的正文确实包含一个指针,所以即使你没有被重定向,你也可以看到那里仍有链接:
r = requests.get(account_url)
>>> r.url
u'https://twitter.com/IaMaGuyGetIt'
>>> r.text
u'<html><body>You are being <a href="https://twitter.com/account/suspended">redirected</a>.</body></html>'
寻找确切的文字。