[英]Get href value BeautifulSoup
如果链接中有任何子链接,如何获取 href 值?
代码:
a_links = []
for link in links:
response = requests.get(link)
soup_link = BeautifulSoup(response.text, 'lxml')
a_cont = soup_link.find_all('div', class_= 'detail__anchor-numb')
for a in a_cont.find_all('a'):
a_link = a['href']
a_links.append(a_link)
输出:
AttributeError: ResultSet object has no attribute 'find_all'. You're probably treating a list of elements like a single element. Did you call find_all() when you meant to call find()?
我相信你的错误在于:
a_cont = soup_link.find_all('div', class_= 'detail__anchor-numb')
for a in a_cont.find_all('a'):
...
a_cont
将是一个可迭代的,因为你调用了find_all
。 如果您的意思是它是单个对象,请尝试调用find
。
否则,尽管您的代码将开始变得非常嵌套,但这里最简单的答案将能够遍历a_cont
。 在此之后,您可能会考虑进行重构。
示例代码:
a_cont = soup_link.find_all('div', class_= 'detail__anchor-numb')
for div in a_cont:
for a in div.find_all('a'):
请注意,这在错误消息中有所指示。 Python 及其广泛使用的软件包非常适合提示您可能出错的地方。 密切注意他们所说的话将非常有助于修复此类错误。
您可以应用css selectors
来获取 href ,如下所示:
a_links = []
for link in links:
response = requests.get(link)
soup_link = BeautifulSoup(response.text, 'lxml')
a_cont = soup_link.select('div.detail__anchor-numb a')
for a in a_cont:
a_link = a['href']
a_links.append(a_link)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.