网页文章自动采集(,帮忙采集某车之家的一些汽车品牌的汽车品牌销售数据,)

优采云 发布时间: 2021-10-31 13:07

  网页文章自动采集(,帮忙采集某车之家的一些汽车品牌的汽车品牌销售数据,)

  应朋友要求,帮助采集某车之家的一些汽车品牌的销售数据,包括购车时间、车型、经销商、裸车价格等信息。今天我们就简单演示一下采集的流程,大家可以根据自己的兴趣展开。比如采集你最喜欢的品牌汽车数据进行统计分析等,有需要的朋友可以参考

  内容

  一、落地页分析

  目标网站是某车之家关于品牌车型的口碑模块相关数据。比如我们展示的奥迪Q5L的口碑页面如下:

  为了演示,可以直接打开上面的网址,然后把它拖到所有的口碑位置,找到我们这次需要的字段采集如下图:

  

  采集字段

  我们翻了一页,发现浏览器的网址变了。您可以找到以下页面的 URL 规则:

   https://k.autohome.com.cn/4851/index_2.html#dataList https://k.autohome.com.cn/4851/index_3.html#dataList https://k.autohome.com.cn/4851/index_4.html#dataList

  对于上面写的URL,我们发现变量部分是车辆型号(比如4851)和页码(比如2,3,4)),所以我们可以构造URL参数如下:

   # typeid是车型,page是页码 url = f'https://k.autohome.com.cn/{typeid}/index_{page}.html#dataList'

  二、数据请求

  通过简单的测试,好像没有防爬,所以简单。

  我们先介绍一下我们需要用到的库:

   import requests import pandas as pd import html from lxml import etree import re

  然后创建一个用于备份的数据请求函数:

   # 获取网页数据(传递参数 车型typeid和页码数) def get_html(typeid,page):     # 组合出请求地址     url = f'https://k.autohome.com.cn/{typeid}/index_{page}.html#dataList'     # 请求数据(因为没有反爬,这里没有设置请求头和其他参数)     r = requests.get(url)     # 请求的网页数据中有网页特殊字符,通过以下方法进行解析     r = html.unescape(r.text)     # 返回网页数据     return r

  请求的数据是网页的html文本。接下来我们使用re解析出总页码数,然后使用xpath解析采集字段。

  三、数据分析

  由于需要翻页,这里我们可以先通过re正则表达式得到总页数。通过查看网页数据,我们发现可以通过以下方式获取总页数:

   try: pages = int(re.findall(r'共(\d+)页',r)[0]) # 如果请求不到页数,则表示该车型下没有口碑数据 except : print(f'{name} 没有数据!') continue

  

  总页码采集

  关于待处理的采集字段信息,我们发现它们都在节点div[@class="mouthcon-cont-left"]中。可以先定位节点数据,然后一一分析。

  

  等待采集字段信息所在的节点

  另外我们发现每个页面最多有15个车模口碑数据,所以可以在每个页面上定位15个数据集为采集信息,遍历采集的代码:

   divs = r_html.xpath('.//div[@class="mouthcon-cont-left"]') # 遍历每个全部的车辆销售信息 for div in divs:     # 找到车辆销售信息所在的地方     mt = div.xpath('./div[@class="choose-con mt-10"]')[0]     # 找到所需字段     infos = mt.xpath('./dl[@class="choose-dl"]')     # 设置空的字典,用于存储单个车辆信息     item = {}     # 遍历车辆信息字段     for info in infos:         key = info.xpath('.//dt/text()')[0]         # 当字段为购买车型时,进行拆分为车型和配置         if key == '购买车型':             item[key] = info.xpath('.//dd/a/text()')[0]             item['购买配置'] = info.xpath('.//span[@class="font-arial"]/text()')[0]         # 当字段为购车经销商时,需要获取经销商的id参数,再调用api获取其真实经销商信息(这里有坑)         elif key == '购车经销商':             # 经销商id参数             经销商id = info.xpath('.//dd/a/@data-val')[0] +','+ info.xpath('.//dd/a/@data-evalid')[0]             # 组合经销商信息请求地址             jxs_url = base_jxs_url+经销商id+'|'             # 请求数据(为json格式)             data = requests.get(jxs_url)             j = data.json()             # 获取经销商名称             item[key] = j['result']['List'][0]['CompanySimple']         else:             # 其他字段时,替换转义字符和空格等为空             item[key] = info.xpath('.//dd/text()')[0].replace("\r\n","").replace(' ','').replace('\xa0','')

  四、数据存储

  由于没有防爬,这里可以直接将采集接收到的数据转换成pandas.DataFrame类型,然后保存为xlsx文件。

   df = pd.DataFrame(items) df = df[['购买车型', '购买配置', '购买地点', '购车经销商', '购买时间', '裸车购买价']] # 数据存储在本地 df.to_excel(r'车辆销售信息.xlsx',index=None,sheet_name='data')

  五、采集结果预览

  整个爬取过程比较简单,来自采集的数据也比较规范。本文以奥迪Q5L为例如下:

  

  至此,这篇关于自动Python爬虫采集一辆车的汽车销售数据文章的文章介绍到这里。更多Python相关采集汽车销售数据内容,请搜索html中文网之前的文章或继续浏览下方相关文章。希望大家以后多多支持html中文网站!

  以上就是Python爬虫自动爬取某车家每辆车的销售数据的详细内容。更多详情请关注其他相关html中文网站文章!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线