0

問題の概要を説明するために、私は Twitter ユーザー "screen_names" のリストを持っており、それらが停止されたユーザーであるかどうかを確認したいと考えています。レート制限の問題を回避するために Twitter 検索 API を使用したくありません (リストが非常に大きいため)。したがって、コンピューターのクラスターを使用してデータセットにラベルを付けようとしています (データベースのアカウントが停止されているかどうかに関係なく)。

http://www.twitter/screen_nameTwitter によってアカウントが停止され、リダイレクト先のリンクからアカウントにアクセスしようとした場合https://twitter.com/account/suspended

メソッドを使用してpython 2.7をurlib使用してこの動作をキャプチャしようとしました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
4

1 に答える 1

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>'

その正確なテキストを探します。

于 2013-04-05T11:35:11.050 に答える