问题:我的selenium报废脚本不会给我发推文ID,可能是因为我的请求方式存在问题。
详细信息:
各位大家好,我在这里找到一个脚本(https://github.com/bpb27/twitter_scraping/blob/master/scrape.py)进入Twitter搜索并获取旧推文的ID。
从这个脚本我改变了两个部分:
user = 'realdonaldtrump'
start = datetime.datetime(2010, 1, 1) # year, month, day
end = datetime.datetime(2016, 12, 7) # year, month, day
已成为
user = 'metoo'
start = datetime.datetime(2017, 10, 24) # year, month, day
end = datetime.datetime(2017, 10, 25) # year, month, day
和
def form_url(since, until):
p1 = 'https://twitter.com/search?f=tweets&vertical=default&q=from%3A'
p2 = user + '%20since%3A' + since + '%20until%3A' + until + 'include%3Aretweets&src=typd'
return p1 + p2
已成为
def form_url(since, until):
p1 = 'https://twitter.com/search?l=fr&q=%23'
p2 = user + '%20since%3A' + since + '%20until%3A' + until + 'include%3Aretweets&src=typd'
return p1 + p2
我的更改后,脚本会正确搜索并遍历所有推文,但不会抓取任何ID。
以下是请求部分:
for tweet in found_tweets:
try:
id = tweet.find_element_by_name(id_selector).get_attribute('href').split('/')[-1]
ids.append(id)
except StaleElementReferenceException as e:
print('lost element reference', tweet)
任何想法如何解决这个问题?
答案 0 :(得分:0)
它可能与html上的更新有关。你的代码tweet.find_element_by_name(id_selector)应该返回
<a href="/xxx/status/928601524380536xxx" class="tweet-timestamp js-permalink js-nav js-tooltip" title="04:33 - 9 nov. 2017" data-conversation-id="928601524380536xxx"><span class="_timestamp js-short-timestamp " data-aria-label-part="last" data-time="xxx" data-time-ms="xxx" data-long-form="true">9 nov.</span></a>
如您所见,没有href属性。您应该为每条推文获取“data-conversation-id”属性,而不是获取href。
id = tweet.find_element_by_name(id_selector)['data-conversation-id']
另一方面,我不想使用这个id_selector('。at.tweet-timestamp'),因为tweet ['data-item-id']应该给出id。
<li class="js-stream-item stream-item stream-item" data-item-id="928601524380536xxx" id="stream-item-tweet-928601524380536xxx" data-item-type="tweet">
贝斯茨,