Python 当你试图获取的信息有时丢失时,制作网页垃圾

Python 当你试图获取的信息有时丢失时,制作网页垃圾,python,web-scraping,beautifulsoup,Python,Web Scraping,Beautifulsoup,当我尝试在页面上刮取所有图形卡的品牌时,它在前15个版本中有效,但随后我得到一个TypeError:“NoneType”对象不可订阅 从bs4导入BeautifulSoup作为汤 从urllib.request导入urlopen作为uReq #我们要刮取的url并将其保存到变量中 url='1〕https://www.newegg.com/p/pl?d=graphics+卡片和随机ID=5518772190148225021021001440和页面大小=36' #打开url并返回文件对象 uCl

当我尝试在页面上刮取所有图形卡的品牌时,它在前15个版本中有效,但随后我得到一个
TypeError:“NoneType”对象不可订阅

从bs4导入BeautifulSoup作为汤
从urllib.request导入urlopen作为uReq
#我们要刮取的url并将其保存到变量中
url='1〕https://www.newegg.com/p/pl?d=graphics+卡片和随机ID=5518772190148225021021001440和页面大小=36'
#打开url并返回文件对象
uClient=uReq(url)
#读取对象并以字符串形式返回html内容
page_html=uClient.read()
#关闭文件
uClient.close()
#html解析
page_soup=soup(page_html,“html.parser”)
#使用item容器类获取每个元素并存储在变量中
containers=page_soup.findAll(“div”,“class”:“item container”})
#从网站上抓取每个图形卡的品牌
对于集装箱中的集装箱:
品牌=container.div.div.a.img[“title”]
印刷品(品牌)

在这种情况下,捕捉错误(在您的情况下是
类型错误

试试看:
可以提出的东西
类型错误除外:#特定异常
我的_代码_处理_异常()#可能什么都不做
例外情况除外,例如:#一般例外情况
#注意,您可以在此处收集异常对象以与其交互!
打印(“捕获到意外异常:{}”。格式(repr(ex))
raise ex#将该异常重新引发到调用函数
对你来说,也许这就是你想要的

。。。
对于索引,枚举中的容器(容器):
尝试:
印刷品(container.div.div.a.img[“title”])#品牌
例外情况除外,例如:
打印(“无法从容器{}读取品牌”。格式(索引))

Wow很有效,非常感谢。问题:为什么使用enumerate()可以工作?enumerate不只是生成一个计数器和值吗?例如,对于索引,choices=['a','b','c','d'],枚举中的值(选项):打印(索引,值)将产生0a1b2c3dah,使它工作的不是
enumerate
,而是某种形式的
try/except
在循环中,或者不重新引发异常;是的,完全正确,我在没有枚举的情况下尝试了它,它工作了,因此我让它工作的是你的except语句“Exception as ex:”。你能解释一下为什么这样做吗,让Exception参数为ex实际上做了什么吗?几乎可以肯定的是,它要么重新提升(我的第一个示例是
raise ex
,而简单的
raise
将选择最近的一个)要么包装整个循环体(错误?)然后编辑中间代码。
as-ex
组将异常分配给
ex
(可以是任何名称)的名称,该名称位于
块()的上下文中,这允许您与异常对象交互