我想从我的推文中收集所有Twitter卡的标题和网址。例如,对于此推文:https://twitter.com/WSJ/status/1021517076069056514,我想检索以下信息:
现在,我通过转到鸣叫并检查卡来获取此信息,但我想这样做以获取代码并遍历我的鸣叫。有谁知道如何以编程方式获取此信息?非常感谢!
答案 0 :(得分:1)
TLDR ;真正的最佳答案可能是Get Twitter card from API
的副本答案建议检查对URL的请求并检查HTML元素。这适用于您的示例推文,但不幸的是,它可能不足以适用于所有其他推文。
例如,我使用了在示例中找到的硬编码标签,而这些标签可能不在其他标签中。 但是可以肯定的是,这可以作为起点,并适用于所有推文。
最重要的是证明它可以做到。
import tweepy
from tweepy import OAuthHandler
import requests
# fill values
consumer_key = ''
consumer_secret = ''
access_token = ''
access_secret = ''
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
api = tweepy.API(auth)
tweet_id = 1021517076069056514
status = api.get_status(id=tweet_id)
tweet_url = status.entities['urls'][0]['expanded_url']
r = requests.get(tweet_url)
from bs4 import BeautifulSoup
soup = BeautifulSoup(r.content, 'html.parser')
media_container = soup.select('div.card2.js-media-container')
tweet_card = media_container[0].select('div.js-macaw-cards-iframe-container')
tweet_card_url = tweet_card[0]['data-full-card-iframe-url']
twitter_base_url = 'http://www.twitter.com'
r2 = requests.get(''.join([twitter_base_url, tweet_card_url]))
final_page = r2.content
soup2 = BeautifulSoup(final_page, 'html.parser')
final_data = soup2.find('img', {'class': 'u-block'})
headline = final_data['alt']
image_link = final_data['data-src']
print 'Headline: {}'.format(headline)
print 'Image Link: {}'.format(image_link)
获取:
Headline: Global central banks have rattled bond markets
Image Link: https://pbs.twimg.com/card_img/1021513789722841093/LQWGa8uL?format=jpg&name=600x314