栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python爬虫 之使用BeautifulSoup获取详情描述

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python爬虫 之使用BeautifulSoup获取详情描述

先看第一个详情描述:

在看第二个详情描述:

显而易见:

第二个车的描述不完整

在看html:

6个红色小框框都是在一个div盒子下的(黑色框),而且一个个红色的小框框分别在一个个dl标签中;

品牌,车型,车龄,行驶里程,排量,变速箱都是在dl标签下的dt中;

而品牌,车型,车龄,行驶里程,排量,变速箱的值都是在dl标签中的dd标签中;

这里获取这一页作为演示(使用beautifulsoup):
# 导入模块
import requests
from bs4 import BeautifulSoup

# url就不写在这里了
url_ = ''

# User-Agent获取自己浏览器就可以
headers={
    'User-Agent': ''
}

# 发起get请求
resp = requests.get(url_,headers)
# 解码成字符串
content = resp.content.decode("utf-8")
# 创建beautifulsoup对象
bsoup = BeautifulSoup(content,'lxml')


# 取到了黑色大框框的全部内容,使用了css层级选择器, 符号>前面可以是类或id,标签名都可以
details = bsoup.select('.dec-params > dl')

爬虫之 获取浏览器的User-Agent步骤_m0_53762615的博客-CSDN博客

遍历一下黑色大框框内容:

首先打印一下类型: 

 第一种做法:
brand = details[0].select('dd')
brand = brand[0].get_text().strip()
print(brand)

long = details[1].select('dd')
long = long[0].get_text().strip()
print(long)


#获取车龄,行驶里程,排量,变速箱类似
x = details[2].select('dd')


y = details[3].select('dd')


z = details[4].select('dd')


c = details[5].select('dd')


结果:
1.5万公里
二手轿车

这种自己写索引的方法,存在两个问题:

1:需要判断品牌,车型,车龄,行驶里程,排量,变速箱是否存在,

如果某一页只有品牌,车型,车龄,排量,变速箱,缺少行驶里程,那么要注意索引不要超过detail的最大索引,超过就会报错

2:有的顺序可以不一致,并不是每一页的都是这样的顺序:品牌,车型,车龄,行驶里程,排量,变速箱,还是需要判断

 第二种做法:
datas = []
data = {}
for i,j in enumerate(details):
     key_ = j.select('dt')[0].get_text().replace(':','').replace(':','')
     value_ = j.select('dd')[0].get_text().strip()
     data[key_] = value_
        

datas.append(data)

结果:

 只需要把dt里的内容作为key,把dd里的内容作为value,就可以不用在意顺序了!

详细版: 

 以上的 i 没有用到,如果要写得详细点还可以这样,这样就可以用到i:

 获取title和售价就很简单,这里不做演示了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/928638.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号