Python - 网络抓取 pubmed.gov 摘要 w/ BeautifulSoup - 出现非类型错误
Python - web scraping pubmed.gov abstracts w/ BeautifulSoup - getting nonetype error
我正在从 pubmed.gov 中抓取摘要,大部分情况下都有效,除了没有文本的摘要。我尝试了一个 IF 语句,但我显然没有做正确的事情。我该怎么做并让它跳过没有抽象文本的网址?我在发生这种情况的地方提供了 URL。
我收到此错误: AttributeError:'NoneType' 对象没有属性 'find'
提前致谢!
import requests
from bs4 import BeautifulSoup
listofa_urls = ['https://www.ncbi.nlm.nih.gov/pubmed/31103571']
for th in listofa_urls:
response = requests.get(th)
soup = BeautifulSoup(response.content, 'html.parser')
if (soup.find(class_='abstr').find('div') is not None):
div_ = soup.find(class_='abstr').find('div')
if div_.find('h4'):
h4_ = div_.find_all('h4')
p_ = div_.find_all('p')
else:
h4_ = soup.find(class_='abstr').find_all('h3')
p_ = soup.find(class_='abstr').find_all('p')
mp = list(map(lambda x, y: [x.get_text(),y.get_text()], h4_, p_))
print(mp)
如评论中所述,您不能对 None 执行 .find()
,因此只需检查第一个 find
是否找到任何内容。
只删除第二个find
:
if (soup.find(class_='abstr').find('div') is not None):
变成
if (soup.find(class_='abstr') is not None)
我正在从 pubmed.gov 中抓取摘要,大部分情况下都有效,除了没有文本的摘要。我尝试了一个 IF 语句,但我显然没有做正确的事情。我该怎么做并让它跳过没有抽象文本的网址?我在发生这种情况的地方提供了 URL。
我收到此错误: AttributeError:'NoneType' 对象没有属性 'find'
提前致谢!
import requests
from bs4 import BeautifulSoup
listofa_urls = ['https://www.ncbi.nlm.nih.gov/pubmed/31103571']
for th in listofa_urls:
response = requests.get(th)
soup = BeautifulSoup(response.content, 'html.parser')
if (soup.find(class_='abstr').find('div') is not None):
div_ = soup.find(class_='abstr').find('div')
if div_.find('h4'):
h4_ = div_.find_all('h4')
p_ = div_.find_all('p')
else:
h4_ = soup.find(class_='abstr').find_all('h3')
p_ = soup.find(class_='abstr').find_all('p')
mp = list(map(lambda x, y: [x.get_text(),y.get_text()], h4_, p_))
print(mp)
如评论中所述,您不能对 None 执行 .find()
,因此只需检查第一个 find
是否找到任何内容。
只删除第二个find
:
if (soup.find(class_='abstr').find('div') is not None):
变成
if (soup.find(class_='abstr') is not None)