【发布时间】:2022-02-10 04:31:14
【问题描述】:
我有以下 html,我在 python 3 中使用 bs4 beautiful soup 从位于特定标签内的链接中提取所有 href:.如果我可能有多个或没有嵌套在 .此外,还有一个步骤是我过滤掉没有“base.html”结尾的链接。
<article>
<a href='link/base.html'>click me!</a>
</article>
...
<article>
<a href='link2/base.html'>click me!</a>
</article>
...
<article>
<a href='link3/base.html'>click me!</a>
</article>
这是我的代码
page = bs4.BeautifulSoup(source, 'html.parser')
articles = page.find_all(name="article")
article_links = map(lambda article: article.a, articles)
article_links = map(lambda tag: tag.get('href'), article_links)
article_links = filter(lambda link: 'base.html' in link, article_links)
article_links = map(lambda link: url + link, article_links)
但是,这会导致
AttributeError: 'NoneType' 对象没有属性 'get''
在第 4 行的 .get('href') 部分。其他变化会导致不同的错误。它需要是 lambda 函数。最好,我还想将前两个 lambda 函数合二为一。
【问题讨论】:
标签: python html web-scraping beautifulsoup lambda