Python 网页抓取错误类型错误:'int'对象不可迭代



我一直在尝试修改一个程序,该程序为您提供了三个随机的热门新闻标题。这是代码:

import bs4
from bs4 import BeautifulSoup as soup
from urllib.request import urlopen
import random
news_url="https://news.google.com/news/rss"
Client=urlopen(news_url)
xml_page=Client.read()
Client.close()
soup_page=soup(xml_page,"xml")
news_list=soup_page.findAll("item")
# Print news title, url and publish date
news_list = random.choice(news_list)
for news_list in range(3):
for news in news_list:
print(news.title.text)
print(news.link.text)
print(news.pubDate.text)
print("-"*60)

下面是我得到的代码错误:

Traceback (most recent call last):
File "newsstuff.py", line 16, in <module>
for news in news_list:
TypeError: 'int' object is not iterable

我希望有人能帮忙,谢谢!

random.choice只返回一个元素。那么,你有for news_list in range(3),所以这里的news_list只是一个整数。您想要参数为3的random.choices(注意"s"(,并对其进行迭代:

news_list = random.choices(news_list, k=3)
for news in news_list:
print(news.title.text)
print(news.link.text)
print(news.pubDate.text)
print("-"*60)

当你这样做时:

news_list = random.choice(news_list)

random.choice函数返回数组、列表或序列的单个元素。在这种情况下,news_list上的一个元素。在这一行之后,news_list的新值是一个单独的元素,检查您得到的错误,它是一个int变量,不能通过for进行迭代。

最新更新