繁体   English   中英

获取 href 值 BeautifulSoup

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM