如何使用 BeautifulSoup4 仅获取“href”? [复制]
Posted
技术标签:
【中文标题】如何使用 BeautifulSoup4 仅获取“href”? [复制]【英文标题】:How to get only "href" with BeautifulSoup4? [duplicate] 【发布时间】:2019-09-28 16:02:56 【问题描述】:我试图只从find_all()
的结果中获取链接
这是我的代码:
mydivs = soup.find_all("td", "class": "candidates")
for link in mydivs:
print(link)
但它返回:
<td class="candidates"><div><a data-tn-element="view-unread-candidates" data-tn-link="true" href="/c#candidates?id=a722443b402&ctx=jobs-tab-view-candidates">56 candidates</a><br/><a data-tn-element="view-unread-candidates" data-tn-link="true" href="/c#candidates?id=a7b2a139b402&candidateFilter=4af15d8991a8"><span class="jobs-u-font--bold">(45 awaiting review)</span></a></div></td>
我想得到什么:
/c#candidates?id=a722443b402&amp;ctx=jobs-tab-view-candidates
【问题讨论】:
是否要包含 href?这是否已经转换为字符串?老实说,这并不是一个真正的 MCVE。 嘿!我只想得到那个/c#candidates?id=a7b2a139b402&amp;candidateFilter=4af15d8991a8
使用this
@daka 我正在浏览您发送的帖子。我正在尝试link.href
,但它返回None
。我的值link
是<Class bs4.element.Tag>
,它包含一个href。可以请教吗?
在尝试访问href
属性之前,您需要找到其中的a
元素。
【参考方案1】:
在将 bs4 元素转换为字符串后,您可以使用正则表达式解析 href 和最后一个引号之间的所有内容。
import re
#Rest of imports/code up until your script.
mydivs = soup.find_all("td", "class": "candidates")
or link in mydivs:
link_text = str(link)
href_link = re.search('href = "(.+?)"', link_text)
print(href_link.group(1))
如下所示的小例子:
import re
link_text = '<td class = "candidates" > <div > <a data-tn-element = "view-unread-candidates" data-tn-link = "true" href = "/c#candidates?id=a722443b402&ctx=jobs-tab-view-candidates" > 56 candidates < /a > <br/> < a data-tn-element = "view-unread-candidates" data-tn-link = "true" href = "/c#candidates?id=a7b2a139b402&candidateFilter=4af15d8991a8" > <span class = "jobs-u-font--bold" > (45 awaiting review) < /span > </a > </div > </td >'
href_link = re.search('href = "(.+?)"', link_text)
print(href_link.group(1))
输出:
/c#candidates?id=a722443b402&ctx=jobs-tab-view-candidates
您可能需要使用 re.search 内部的 href = "
处理间距,因为我看不到标签的样子。但是您需要做的就是从 href 复制确切的文本,直到您希望它起作用的链接的第一个字符。
【讨论】:
见我上面的评论。 不,因为它不必要地复杂,这使它成为一个糟糕的答案,值得一票否决。 查看用户如何尝试您标记为重复的帖子并返回 None 我不会称这过于复杂,而是一种可行的解决方案。以上是关于如何使用 BeautifulSoup4 仅获取“href”? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Beautifulsoup4 - 通过强标记值识别信息仅适用于标记的某些值
如何从 BeautifulSoup4 中的 html 标签中找到特定的数据属性?
如何使用python和beautifulsoup4循环抓取网站中多个页面的数据