我是python的新手,我正在努力让脚本与urllib和BeautifulSoup4一起工作以收集可通过emojitracker API流式传输的推文。它将特定表情符号的推文输出为.json文件。一个例子是这个链接(在chrome中打开): http://emojitracker.com/api/details/1F52B
我可以从.json获取所有文本,但我只想获取推文(在“text:”之后)。我环顾四周,有一个例子可以使用soup.findAll(“a”,class _ =“classname”)来获取页面上的所有链接。
我使用了inspect元素,发现我需要的推文存储为:(span class =“type-string”)推文到这里(/ span)。所以我尝试了以下内容:
from bs4 import BeautifulSoup
import urllib.request
url = "http://emojitracker.com/api/details/1F52B"
page = urllib.request.urlopen(url)
soup = BeautifulSoup(page.read(),"html.parser")
tweets = soup.findAll("span", class_"type-string")
for tweet in tweets:
print (tweet.string)
跑步,它没有打印任何东西。我该怎么做才能打印出推文?
答案 0 :(得分:0)
您提供的页面不是html页面。事实上,它被格式化为json文件,因此您无法将其视为HTML页面。
据我了解,您想要的是检索所有最近的推文。
为了做到这一点,我们像现在一样得到响应,并解析响应字符串并使用json库将其转换为Python字典(因为它不需要安装)标准库的一部分。)
如果您想这样做,我们可以编写以下代码:
import json
import urllib.request
url = "http://emojitracker.com/api/details/1F52B"
page = urllib.request.urlopen(url)
json = json.loads(str(page.read(), 'latin'))
for tweet in json['recent_tweets']:
print(tweet['text'])
希望它有所帮助,