beautifulsoup returns none 对元素使用 find() 时

beautifulsoup returns none when using find() for an element

我正在尝试抓取该网站以检索每篇论文的发表年份。我已经设法获得了工作的头衔,但是说到刮擦岁月,它 returns none.

我已经分解了它,当它进入 for 循环时会出现 'none' 的结果,但我无法弄清楚为什么当它使用标题时会发生这种情况。

import requests 
from bs4 import BeautifulSoup

URL = "https://dblp.org/search?q=web%20scraping"
page = requests.get(URL)

soup = BeautifulSoup(page.content, "html.parser")
results = soup.find(class_="publ-list")
paperResults = results.find_all(class_="data tts-content")
for singlepaper in paperResults:
    paperyear = singlepaper.find(class_="datePublished")
    print(paperyear)

当转到 paperResults 时,它会在上面一行的结果中提供我选择的部分的细分。 任何关于如何检索年份的建议将不胜感激

试试这个:

import requests 
from bs4 import BeautifulSoup

URL = "https://dblp.org/search?q=web%20scraping"
page = requests.get(URL)

soup = BeautifulSoup(page.content, "html.parser")
results = soup.find(class_="publ-list")
paperResults = results.find_all(class_="data tts-content")
for singlepaper in paperResults:
    paperyear = singlepaper.find(attrs={"itemprop": "datePublished"})
    print(paperyear)

对我有用。

改变这个

for singlepaper in paperResults:
    paperyear = singlepaper.find(class_="datePublished")
    print(paperyear)

对此

for singlepaper in paperResults:
    paperyear = singlepaper.find('span', itemprop="datePublished")
    print(paperyear.string)

当您需要解析跨度时,您正在寻找 class...如果您打印 paperResults,您将看到您的 datePublished 是一个 itempropspan 元素中。