我正在尝试仅从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&ctx=jobs-tab-view-candidates
答案 0 :(得分:0)
在将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复制准确的文本,直到您要使其正常工作的链接的第一个字符为止。