我试图从http://rss.cnn.com/rss/money_markets.rss
获取一些文本,当我运行代码时,我不断得到None
的输出。如果有帮助,我尝试从网络上获取所有小标题,并清楚显示其下的文字。谢谢!
import requests
import bs4
from bs4 import BeautifulSoup
web = requests.get("http://rss.cnn.com/rss/money_markets.rss")
start = bs4.BeautifulSoup(web.text, 'lxml')
scrape = start.find(".regularitem")
for i in scrape:
print(scrape)
答案 0 :(得分:1)
浏览器以用户友好的方式(即HTML格式)在http://rss.cnn.com/rss/money_markets.rss
处呈现数据,但数据本身实际上是XML。您可以通过print(response.headers['content-type'])
进行检查,该查询返回'text/xml; charset=ISO-8859-1'
。因此,您需要的是item
XML元素。另外,我建议使用find_all()
来获取所有元素,而不要使用find()
来获取仅第一个元素。
import bs4
import requests
response = requests.get("http://rss.cnn.com/rss/money_markets.rss")
soup = bs4.BeautifulSoup(response.text, 'lxml')
for item in soup.find_all("item"):
print(item.title.text)
print(item.description.text)
print("\n")