网页抓取类型错误:'NoneType'对象不可下标



我的代码:

from bs4 import BeautifulSoup
import requests
source = requests.get('http://coreyms.com').text
soup = BeautifulSoup(source, 'lxml')
for article in soup.find_all('article'):
# print(article.prettify())
headline = article.h2.a.text
print(headline)
summary = article.find('div', class_='entry-content').p.text
print(summary)
vid_src = article.find('iframe', class_='youtube-player')['src'] ## getting error on this line
vid_id = vid_src.split('/')[4]
vid_id = vid_id.split('?')[0]
# print(vid_id)
yt_link = f'https://youtube.com/watch?v={vid_id}'
print(yt_link)

如有任何建议,将不胜感激

原因是,当你在文章中循环时,你假设所有的文章都有你想要的选择器——在这种情况下,它是youtube链接。

其中一篇文章没有您要查找的选择器,因此将返回None。如果你看下面的,它会显示其中一篇文章没有youtube链接。

from bs4 import BeautifulSoup
import requests
source = requests.get('http://coreyms.com').text
soup = BeautifulSoup(source, 'lxml')
for article in soup.find_all('article'):
# print(article.prettify())
try:
headline = article.h2.a.text
# print(headline)
summary = article.find('div', class_='entry-content').p.text
# print(summary)
vid_src = article.find('iframe', class_='youtube-player')['src'] ## 
getting error on this line
vid_id = vid_src.split('/')[4]
vid_id = vid_id.split('?')[0]
# print(vid_id)
yt_link = f'https://youtube.com/watch?v={vid_id}'
print(yt_link)
except Exception as E:
print(E)

最新更新