我的代码在没有警告的情况下停止工作我把它缩小到requests.get
,不再获得链接的html了。取而代之的是<response [200]>
。
我知道它在某个方面有效,我不明白改变了什么。
t = requests.get("http://dictionary.goo.ne.jp/srch/jn/変体/m0u/")
soup2 = BeautifulSoup(t.content)
lookup2 = soup2.find_all("dl", {"class":"allList"})[0]
link = lookup2.find_all("a")[0]
link = link.get("href")
link = "http://dictionary.goo.ne.jp/" + link
r = requests.get(link)
soup = BeautifulSoup(r.content)
lookup = soup.find_all("div", {"class":"meaning"})[0].text
print(lookup)
收到错误:
Traceback (most recent call last):
File "C:/Users/Dominic/PycharmProjects/untitled2/main.py", line 12, in <module>
lookup2 = soup2.find_all("dl", {"class":"allList"})[0]
IndexError: list index out of range
答案 0 :(得分:0)
您的代码假定以下行:
t = requests.get("http://dictionary.goo.ne.jp/srch/jn/変体/m0u/")
始终给出相同的结果。而且肯定不是这种情况。该网站可能需要维护,可能会被暂时淹没,渲染网站时可能会出错等。
使用HTTP状态代码传达这些问题,可以使用t.status_code
检索。
如果状态代码不 200,则您无法再对t.contents
中的HTML做出任何假设,例如存在任何<dl>
标记的事实
为了使您的代码更加健壮,您可以自行检查状态代码,或至少在使用t.raise_for_status()
之前致电t.contents
。
有关详细信息,请参阅requests
documentation。