gpt4 book ai didi

python - 调用函数时返回键错误

转载 作者:行者123 更新时间:2023-12-01 05:52:15 24 4
gpt4 key购买 nike

我在测试这个 BeautifulSoup 爬网程序时遇到问题。如果有一些明显的错误,请原谅我,因为这是我学习 Python 的第三个小时。我有下面的代码...

def huffpost_crawl():
article_list = []
DOMAIN = 'huffingtonpost.com'
huff_soup = BeautifulSoup(urllib2.urlopen("http://www.huffingtonpost.com").read())
news_list = huff_soup.find_all("div", {"class", "snp_most_popular_entry"})[0]
for news in news_list[0]:
title = news('div', {'class', 'snp_most_popular_entry_desc'})[0].a.get_text()
full_url = news('div', {'class', 'snp_most_popular_entry_image'}).a["href"]
blurb = ""
thumb_url = news('div', {'class',
'snp_most_popular_entry_image'}).a.img["longdesc"]


print title

huffpost_crawl()

当我在终端中运行 pythong test.py 时,我返回...

Traceback (most recent call last):
File "test.py", line 21, in <module>
huffpost_crawl()
File "test.py", line 11, in huffpost_crawl
for news in news_list[0]:
File "/usr/local/lib/python2.7/site-packages/bs4/element.py", line 879, in __getitem__
return self.attrs[key]
KeyError: 0

最佳答案

问题是这样的:

news_list = huff_soup.find_all("div", {"class", "snp_most_popular_entry"})[0]
for news in news_list[0]:

只需删除这两个 [0] 位之一,问题(或者至少是这个问题 - 我不能保证代码的其余部分能够满足您的要求)就会消失。

我不会解释为什么代码是错误的,因为你确实需要学习调试代码并自己解决这些问题。

首先在交互式解释器中执行此操作:

>>> huff_soup = BeautifulSoup(urllib2.urlopen("http://www.huffingtonpost.com").read())
>>> news_list = huff_soup.find_all("div", {"class", "snp_most_popular_entry"})

看看它返回了什么——它是什么形状,以及如何以交互方式到达你想要的部分?一旦您知道了这一点,如何在脚本中执行此操作就应该很明显了。

即使事情太复杂而无法交互操作,您也可以使用 print 语句记录内容,在调试器中运行等。不要只是盲目地盯着不起作用的代码并说“为什么不起作用”它不起作用吗?”,或者将代码发布到某个地方并询问其他人为什么它不起作用,否则你永远不会学到任何东西。

关于python - 调用函数时返回键错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13794483/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com