首页 > 解决方案 > 无法从“a class”的beautifulsoup 中获取href

问题描述

我试图从这个网站中提取href,但我找不到这样做的方法,我尝试使用这个:

busqueda = requests.get('https://autos.mercadolibre.com.ar/vento/_DisplayType_LF')
auto_cont = BeautifulSoup(busqueda.content)
auto_cont.find_all('a',{'class':'item__info-title'}, href = True)

但是有一个 '<span>' 内容,我无法克服它。

标签: pythonweb-scrapingbeautifulsoup

解决方案


find_all已经解释过了。但是,您的选择器会产生重复,因为它会从标题和价格中提取相同的 url。相反,我会使用一个子组合器和一个不同的父类,并添加一个子a标签来获取唯一列表。我更select喜欢find_all. select 应用css 选择器以匹配元素。所有这些a标签都有href所以不需要添加测试。

from bs4 import BeautifulSoup as bs
import requests

r = requests.get('https://autos.mercadolibre.com.ar/volkswagen/vento/_DisplayType_LF')
soup = bs(r.content, 'lxml')
links = [item['href'] for item in soup.select('.list-view-item-title > a')]

子组合器:

子组合符 (>) 放置在两个 CSS 选择器之间。它只匹配第二个选择器匹配的那些元素,这些元素是第一个选择器匹配的元素的子元素。


参考:

  1. https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.html?highlight=select_one#css-selectors

推荐阅读