python - 无法从“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>' 内容,我无法克服它。
解决方案
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 选择器之间。它只匹配第二个选择器匹配的那些元素,这些元素是第一个选择器匹配的元素的子元素。
参考:
推荐阅读
- python - 循环遍历列中的值并将它们放入 python 中的类别
- r - 根据用户为文件夹设置路径
- java - 为什么我的 FileReader/BufferReader 同时返回句子和 null?
- google-sheets - Google 表格 - 条件格式 - 倒数
- javascript - 如何更新 ApexChart?
- selenium - 如何在 EyeAutomate 中替换保存在变量中的文本
- javascript - 如何捕获事件处理程序的返回值?
- python - Discord.py bot - 如果声明为真,则向 Discord 服务器发送消息
- python - `HTTPServer` 或`BaseHTTPRequestHandler` 中是否发生了一些缓存或分叉?
- c++ - 将笛卡尔坐标转换为极坐标