当我尝试使用网址来抓取网页时,我发现某些元素仅存在于某些页面中而其他元素则不存在。我们以代码为例
代码:
for urls in article_url_set:
re=requests.get(urls)
soup=BeautifulSoup(re.text.encode('utf-8'), "html.parser")
title_tag = soup.select_one('.page_article_title')
if title_tag=True:
print(title_tag.text)
else:
#do something
另一件事是,我需要在数据中保存其他元素和title.tag.text。
data={
"Title":title_tag.text,
"Registration":fruit_tag.text,
"Keywords":list2
}
它会有错误,因为并非所有文章都有标题,当我尝试保存时,我该怎么做才能跳过它们?的' NoneType'对象没有属性' text'
编辑:我决定不跳过它们并将它们保持为空或无。
答案 0 :(得分:1)
U代码错误:
for urls in article_url_set:
re=requests.get(urls)
soup=BeautifulSoup(re.text.encode('utf-8'), "html.parser")
title_tag = soup.select_one('.page_article_title')
if title_tag=True: # wrong
print(title_tag.text)
else:
#do something
如果title_tag = True,你的代码
更改了代码title_tag == True
建议按如下方式创建条件语句。
title_tag == True
=> True == title_tag
这是一种在犯错时出错的方法。
如果代码为True = title_tag
,则会出现错误。
答案 1 :(得分:1)
您可以简单地使用真值测试来检查标记是否存在,否则指定一个类似None
的值,然后您可以将其插入数据容器中:
title_tag = soup.select_one('.page_article_title')
if title_tag:
print(title_tag.text)
title = title_tag.text
else:
title = None
或者在一行中:
title = title_tag.text if title_tag else None