当循环的一部分包含其他项时,Href键出错

2024-05-22 00:16:37 发布

您现在位置:Python中文网/ 问答频道 /正文

运行此代码时:

url = "https://www.researchgate.net/profile/David_Severson"
r = requests.get(url)
data = r.text
soup = bsoup(data, "lxml")

for a in soup.find_all('a', {"class": "nova-e-badge nova-e-badge--color-green nova-e-badge--display-block nova-e-badge--luminosity-high nova-e-badge--size-l nova-e-badge--theme-solid nova-e-badge--radius-m nova-v-publication-item__type"}, href=True):
    print (a['href'])

它返回所有的链接没有问题。在

当我把它作为一个更复杂的循环的一部分与其他元素:

^{pr2}$

它不再返回我想要的href(链接),而是给我KeyError:href

为什么它不再返回链接?在


Tags: 代码httpsbadgeurldatanet链接www
2条回答

您的p in papersdiv元素,而不是前面代码片段中的a元素,这就是href键错误的原因。也许你想要link['href']假设链接不是None。在

link获取输入

例如:

from bs4 import BeautifulSoup
import requests
url = "https://www.researchgate.net/profile/David_Severson"
r = requests.get(url)
data = r.text
soup = BeautifulSoup(data, "html.parser")
item = soup.find("div", {"class": "section section-research"})
papers = [paper for paper in item.find_all("div", {"class": "nova-o-stack__item"})]
for p in papers:
    title = p.find("div", {"class": "nova-e-text nova-e-text size-l nova-e-text family-sans-serif nova-e-text spacing-none nova-e-text color-inherit nova-v-publication-item__title nova-v-publication-item__title clamp-3"})
    abstract = p.find("div", {"class": "nova-e-text nova-e-text size-m nova-e-text family-sans-serif nova-e-text spacing-none nova-e-text color-inherit nova-v-publication-item__description nova-v-publication-item__description clamp-3"})
    views = p.find("ul", {"class": "nova-e-list nova-e-list size-m nova-e-list type-inline nova-e-list spacing-none nova-v-publication-item__metrics"})
    date = p.find("li", {"class": "nova-e-list__item publication-item-meta-items__meta-data-item"})
    authors = p.find("ul", {"class": "nova-e-list nova-e-list size-m nova-e-list type-inline nova-e-list spacing-none nova-v-publication-item__person-list"})
    link = p.find("a", {"class": "nova-e-badge nova-e-badge color-green nova-e-badge display-block nova-e-badge luminosity-high nova-e-badge size-l nova-e-badge theme-solid nova-e-badge radius-m nova-v-publication-item__type"},href=True)

    if link:
        print(link["href"])

相关问题 更多 >