我试着找到一个div里面的一个div在一个文章标签中。下面是我的代码,直到它崩溃:
chart = soup.find('div',{'class':"chart-data"})
for divTag in chart.find_all('div'):
for articleTag in divTag.find_all('article'):
savedSpans[1]=str(articleTag.get('id'))[4:]
print savedSpans[1]
FirstDiv=articleTag.find("div",{'class':'row-primary'})
print 'articleTag', type(articleTag)
print 'FirstDiv', type(FirstDiv)
SecondDiv=FirstDiv.find("div",{'class':'row-title'})这是输出。由于某种原因,在打印'FirstDiv‘行和SecondDiv=行之前,打印命令会被重复,而"FirstDiv“变量会丢失它的值。还有想法?
1
articleTag <class 'bs4.element.Tag'>
FirstDiv <class 'bs4.element.Tag'>
articleTag <class 'bs4.element.Tag'>
FirstDiv <type 'NoneType'>以下是错误消息:
Traceback (most recent call last):
File "billboardscrape.py", line 26, in <module>
SecondDiv=FirstDiv.find("div",{'class':'row-title'})
AttributeError: 'NoneType' object has no attribute 'find'发布于 2015-09-26 18:56:59
通过在我的标记标识符中更具体地修正它:
chart = soup.find('div',{'class':"chart-data"})
for divTag in chart.find_all('div', {'class':"container"}):
for articleTag in divTag.find_all('article',{'class':"chart-row"}):
savedSpans[1]=str(articleTag.get('id'))[4:]发布于 2015-09-22 18:33:04
首先,如果程序崩溃,我们需要看到错误声明。
您正在遍历所有div元素:
for divTag in chart.find_all('div'):对于每个div元素,您将遍历所有标题为“文章”的元素。
for articleTag in divTag.find_all('article'):好的,所以articleTag表示正在迭代的当前Div元素中找到的当前“文章”标记。
然后将变量FirstDiv设置为在articleTag中搜索类: row-primary。
第二个articleTag似乎不包含任何包含类行主元素的元素,因此返回为None。即FirstDiv =无
然后运行以下命令:
SecondDiv=FirstDiv.find("div",{'class':'row-title'})这会导致错误,因为正如前面提到的,FirstDiv为None (即找不到)。
在运行SecondDiv=之前。您需要检查FirstDiv是否等于None,如果FirstDiv等于None,您知道不要在这个变量上运行.find方法。
https://stackoverflow.com/questions/32724110
复制相似问题