为什么网络抓取循环返回错误
why is the loop for webscraping returning an error
from bs4 import BeautifulSoup
import requests as r
d='https://coreyms.com'
da=r.get(d).text
print(da)
corey=BeautifulSoup(da,'lxml')
print(corey.prettify())
for article in corey.find_all('article'):
hd=article.h2.a.text
print(hd)
summ=article.find('div',class_='entry-content').p.text
print(des)
vid=article.find('iframe',class_="youtube-player")["src"] #upon inspection, this line of code is not running correctly in the loop. Am i missing something?
splt_vd_link=vid.split('/')[4]
splt_vd_link=splt_vd_link.split('?')[0]
y_link=f'https:youtube.com/watch?v={splt_vd_link}'
print(y_link)
print()
我正在按照 YouTube 教程学习如何抓取网页。我的代码行与教程中显示的完全相同,但它 returns 是一个错误,因为我 运行 它。我完全迷路了
您的第一个问题是打印不存在的变量 print(des)
,第二个问题是并非您尝试 抓取 页面上的每个 <article>
标签包含 <iframe>
和 youtube link 因此在这种情况下您需要跳过循环中的迭代:
if vid is None:
continue
完整的工作代码:
from bs4 import BeautifulSoup
import requests as r
d='https://coreyms.com'
da=r.get(d).text
print(da)
corey=BeautifulSoup(da,'lxml')
print(corey.prettify())
for article in corey.find_all('article'):
vid=article.find('iframe',class_="youtube-player")
if vid is None:
continue
vid = vid["src"]
hd=article.h2.a.text
print(hd)
summ=article.find('div',class_='entry-content').p.text
splt_vd_link=vid.split('/')[4]
splt_vd_link=splt_vd_link.split('?')[0]
y_link=f'https:youtube.com/watch?v={splt_vd_link}'
print(y_link)
print()
from bs4 import BeautifulSoup
import requests as r
d='https://coreyms.com'
da=r.get(d).text
print(da)
corey=BeautifulSoup(da,'lxml')
print(corey.prettify())
for article in corey.find_all('article'):
hd=article.h2.a.text
print(hd)
summ=article.find('div',class_='entry-content').p.text
print(des)
vid=article.find('iframe',class_="youtube-player")["src"] #upon inspection, this line of code is not running correctly in the loop. Am i missing something?
splt_vd_link=vid.split('/')[4]
splt_vd_link=splt_vd_link.split('?')[0]
y_link=f'https:youtube.com/watch?v={splt_vd_link}'
print(y_link)
print()
我正在按照 YouTube 教程学习如何抓取网页。我的代码行与教程中显示的完全相同,但它 returns 是一个错误,因为我 运行 它。我完全迷路了
您的第一个问题是打印不存在的变量 print(des)
,第二个问题是并非您尝试 抓取 页面上的每个 <article>
标签包含 <iframe>
和 youtube link 因此在这种情况下您需要跳过循环中的迭代:
if vid is None:
continue
完整的工作代码:
from bs4 import BeautifulSoup
import requests as r
d='https://coreyms.com'
da=r.get(d).text
print(da)
corey=BeautifulSoup(da,'lxml')
print(corey.prettify())
for article in corey.find_all('article'):
vid=article.find('iframe',class_="youtube-player")
if vid is None:
continue
vid = vid["src"]
hd=article.h2.a.text
print(hd)
summ=article.find('div',class_='entry-content').p.text
splt_vd_link=vid.split('/')[4]
splt_vd_link=splt_vd_link.split('?')[0]
y_link=f'https:youtube.com/watch?v={splt_vd_link}'
print(y_link)
print()