前言

最近比较关注各类汽车的情况,在车主指南(https://www.icauto.com.cn)看见七月份的汽车前550销量排行,于是便写了爬虫爬取该网页的表格(https://www.icauto.com.cn/rank),在爬取网页之后发现各种链接网址,并一并分网页爬取了各种汽车的情况。

原理步骤

1、抓取主网页,将主网页的表格内容提取出来。
2、提取各种汽车的数据网址。
3、分页抓取各类汽车型号等网页,并将所需要的数据提取出来。
4、将各类数据写入excel,并保存。

代码实现

导入需要的库

import requests
from lxml import etree
import xlwt
import urllib.parse

抓取首页并获取需要的数据

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'}
url = 'https://www.icauto.com.cn/rank/'#主网页网址
#爬取网页,对总排行的汽车网页信息进行数据分析,并用xpath提取想要的信息和每个车的详细介绍网页
def page_analyze():res = requests.get(url, headers=headers) #向主机发送请求,获得网页内容page_text = res.text #将网页进行文本转换#print(type(res.text))#print(res.text)with open('./汽车销量排行.html', 'w', encoding='utf-8') as fp:fp.write(page_text)with open('./汽车销量排行.html', 'r', encoding='utf-8') as f:c = f.read()selector = etree.HTML(c)data =[]chexing = selector.xpath('//table[@class="bordered"]/tr/td[2]/a/text()')#print(chexing)pingpai = selector.xpath('//table[@class="bordered"]/tr/td[3]/a[1]/text()')jiage = selector.xpath('//table[@class="bordered"]/tr/td[3]/text()[2]')xiaoliang1 = selector.xpath('//table[@class="bordered"]/tr/td[4]/text()')xiaoliang2 = selector.xpath('//table[@class="bordered"]/tr/td[5]/text()')paihang = selector.xpath('//table[@class="bordered"]/tr/td[1]/text()')herf = selector.xpath('//table[@class="bordered"]/tr/td[2]/a/@href')#主网页信息提取leixing =[]baozhi =[]guobei =[]chechang = []cheshen =[]

抓取各种汽车子网页并提取汽车类型数据

    for m in range(0,550):new_url = urllib.parse.urljoin(url,herf[m])print(new_url)#将获得的子网页网址和url进行拼接,获得需要访问的网址resp = requests.get(url=new_url, headers=headers)page_te=resp.text#发送请求获得子网页内容with open('./汽车销量排行.html', 'w', encoding='utf-8') as fp:fp.write(page_te)with open('./汽车销量排行.html', 'r', encoding='utf-8') as f:h = f.read()htm = etree.HTML(h)guo = htm.xpath('//div[@class="carInfo"]/dd[2]/text()')guobei.append(guo)lei = htm.xpath('//div[@class="carInfo"]/dd[3]/text()')leixing.append(lei)chang = htm.xpath('//div[@class="carInfo"]/dd[4]/text()')chechang.append(chang)bao = htm.xpath('//div[@class="carInfo"]/dd[5]/text()')baozhi.append(bao)shen = htm.xpath('//div[@class="carInfo"]/dd[6]/text()')cheshen.append(shen)#提取每个子网页我们需要的内容,并将其按类分类data.append(paihang)data.append(chexing)data.append(pingpai)data.append(jiage)data.append(xiaoliang1)data.append(xiaoliang2)data.append(guobei)data.append(baozhi)data.append(cheshen)data.append(chechang)data.append(leixing)

将数据写入excel并保存

 workbook = xlwt.Workbook('./2022.06汽车销量排行.xlsx')worksheet = workbook.add_sheet('2022.06汽车销量排行榜')worksheet.write(0,0,'排名')worksheet.write(0,1,'车型')worksheet.write(0,2,'品牌')worksheet.write(0,3,'指导价格')worksheet.write(0,4,'月销量')worksheet.write(0,5,'年销量')worksheet.write(0,6,'国别')worksheet.write(0,7,'保值率')worksheet.write(0,8,'车身结构')worksheet.write(0,9,'车厂')worksheet.write(0,10,'类型')for i in range(0, 11):#print("第%d条" % (i + 1))dat = data[i]for j in range(0, 550):worksheet.write(j+ 1, i, dat[j])workbook.save('./2022.06汽车销量排行.xlsx')

完整代码

#调用所需要的库
import requests
from lxml import etree
import xlwt
import urllib.parse
from time import sleep
#车主指南汽车排行网页请求参数
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'}
url = 'https://www.icauto.com.cn/rank/'#主网页网址
#爬取网页,对总排行的汽车网页信息进行数据分析,并用xpath提取想要的信息和每个车的详细介绍网页
def page_analyze():res = requests.get(url, headers=headers) #向主机发送请求,获得网页内容page_text = res.text #将网页进行文本转换#print(type(res.text))#print(res.text)with open('./汽车销量排行.html', 'w', encoding='utf-8') as fp:fp.write(page_text)with open('./汽车销量排行.html', 'r', encoding='utf-8') as f:c = f.read()selector = etree.HTML(c)data =[]chexing = selector.xpath('//table[@class="bordered"]/tr/td[2]/a/text()')#print(chexing)pingpai = selector.xpath('//table[@class="bordered"]/tr/td[3]/a[1]/text()')jiage = selector.xpath('//table[@class="bordered"]/tr/td[3]/text()[2]')xiaoliang1 = selector.xpath('//table[@class="bordered"]/tr/td[4]/text()')xiaoliang2 = selector.xpath('//table[@class="bordered"]/tr/td[5]/text()')paihang = selector.xpath('//table[@class="bordered"]/tr/td[1]/text()')herf = selector.xpath('//table[@class="bordered"]/tr/td[2]/a/@href')#主网页信息提取leixing =[]baozhi =[]guobei =[]chechang = []cheshen =[]#对各个汽车的网页信息进行分类提取for m in range(0,550):new_url = urllib.parse.urljoin(url,herf[m])print(new_url)#将获得的子网页网址和url进行拼接,获得需要访问的网址resp = requests.get(url=new_url, headers=headers)page_te=resp.text#发送请求获得子网页内容with open('./汽车销量排行.html', 'w', encoding='utf-8') as fp:fp.write(page_te)with open('./汽车销量排行.html', 'r', encoding='utf-8') as f:h = f.read()htm = etree.HTML(h)guo = htm.xpath('//div[@class="carInfo"]/dd[2]/text()')guobei.append(guo)lei = htm.xpath('//div[@class="carInfo"]/dd[3]/text()')leixing.append(lei)chang = htm.xpath('//div[@class="carInfo"]/dd[4]/text()')chechang.append(chang)bao = htm.xpath('//div[@class="carInfo"]/dd[5]/text()')baozhi.append(bao)shen = htm.xpath('//div[@class="carInfo"]/dd[6]/text()')cheshen.append(shen)#提取每个子网页我们需要的内容,并将其按类分类data.append(paihang)data.append(chexing)data.append(pingpai)data.append(jiage)data.append(xiaoliang1)data.append(xiaoliang2)data.append(guobei)data.append(baozhi)data.append(cheshen)data.append(chechang)data.append(leixing)#将所有内容合并成一大类
#将所获取的列表存入excel,并对表格进行格式调整workbook = xlwt.Workbook('./2022.06汽车销量排行.xlsx')worksheet = workbook.add_sheet('2022.06汽车销量排行榜')worksheet.write(0,0,'排名')worksheet.write(0,1,'车型')worksheet.write(0,2,'品牌')worksheet.write(0,3,'指导价格')worksheet.write(0,4,'月销量')worksheet.write(0,5,'年销量')worksheet.write(0,6,'国别')worksheet.write(0,7,'保值率')worksheet.write(0,8,'车身结构')worksheet.write(0,9,'车厂')worksheet.write(0,10,'类型')for i in range(0, 11):#print("第%d条" % (i + 1))dat = data[i]for j in range(0, 550):worksheet.write(j+ 1, i, dat[j])workbook.save('./2022.06汽车销量排行.xlsx')
if __name__ == '__main__':page_analyze()print('实践小项目圆满完成,再接再励!')

备注

因为博主比较懒,不喜欢码字,本博客就只写具体实现代码,至于具体实现情况就不再缀诉,大家如果要学习,请参照代码自行研究。

爬虫爬取车主指南各类汽车数据相关推荐

  1. Python爬虫 爬取酷狗TOP500的数据

    根据书籍<从零开始学Python网络爬虫>P41,综合案例2-爬取酷狗TOP500的数据修改而来. 使用模块requests和模块BeautifukSoup进行爬取. 不得不说,酷狗拿来跑 ...

  2. xpath解析爬虫爬取豆瓣图书Top250的数据

    这是在学习阶段写的爬虫,爬取的是豆瓣图书Top250榜的名称,作者,评分等数据 第一次写文章,如果有什么问题,欢迎各位大佬进行指正,谢谢来踩. 1.首先需要明确自己想要爬取的内容,并在网页中查看数据是 ...

  3. 爬虫爬取糗事百科图片数据

    如图,爬取所有图片,不包含文字 通过抓包工具可知每一张图片所在div的class="thumb",利用正则表达式 ex = '<div class="thumb&q ...

  4. idea爬虫爬取招聘信息,大数据

    某工厂来学校培训大数据爬虫,先提供个网页 <%@ page language="java" import="java.util.*" pageEncodi ...

  5. 轻松利用Python爬虫爬取你想要的数据

    网络爬虫的基本工作流程如下: 1.首先选取一部分精心挑选的种子URL. 2.将这些URL放入待抓取URL队列. 3.从待抓取URL队列中读取待抓取队列的URL,解析DNS,并且得到主机的IP,并将UR ...

  6. python爬虫股票上证指数_Python爬虫爬取搜狐证券股票数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于IT信息教室,作者:M先森看世界 数据的爬取 我们以上证50的股票为例,首先需 ...

  7. python爬虫爬取网页上的天气数据

    目录 一:获取网页重要信息 二:爬取网页数据 三:源码分享 一:获取网页重要信息 在要爬取数据信息的网页上,F12进入查看网页内容 二:爬取网页数据 1 导入模块 import requests fr ...

  8. python爬虫|爬取亚马逊商品库存数据(Selenium实战)

    前言 很多人把selenium爬虫称之为可视化爬虫,之所以这样认为,主要在于selenium爬虫主要是模拟人的点击操作,而selenium驱动浏览器并进行操作的过程是可以观察到的.换言之,就是你在看着 ...

  9. python爬携程酒店评论_python爬虫爬取携程网的酒店评论数据时,有个请求参数不知道是怎么生成的?...

    是下面这个代码生成的,看不懂: ,_getElevenValue:function(e){ function o(e){ for(var o=["A","B", ...

  10. 爬取两万多租房数据,告诉你广州房租现状(4)

    概述 前言 统计结果 爬虫代码实现 爬虫分析实现 后记 前言 建议在看这篇文章之前,请看完这三篇文章,因为本文是依赖于前三篇文章的: 爬虫利器初体验(1) 听说你的爬虫又被封了?(2) 爬取数据不保存 ...

最新文章

  1. Page 的生命周期学习小结
  2. An attempt has been made to start a new process before the current process has finished its
  3. elasticsearch7.9.2 安装配置
  4. 获取当前鼠标的位置以及组件的位置
  5. mongodb3 重启_手机卡顿反应慢?OPPOR9splus重启找回“新机”手感_
  6. 你有程序员朋友吗?告诉他,100 万等他来拿
  7. 1018. 锤子剪刀布 (20)-PAT乙级真题
  8. 【信号与系统|吴大正】2:连续系统的时域分析
  9. stm32f4 dma da正弦波发生器 keil5 hal库 CubeMX
  10. 【Linux应用】中标麒麟操作系统
  11. 湖南职称计算机模拟试题,湖南职称计算机考试培训软件:集职称计算机考试模拟题、长沙职称计算机考试题库...
  12. TPC TPCC TPMC 计算机性能衡量指标
  13. Springboot版本的WebSocket向app端推送消息实现
  14. PHP孟加拉钢厂_昆钢推进孟加拉国、柬埔寨、缅甸钢铁国际产能合作示范园区建设...
  15. 《千与千寻》与《天空之城》配色分享
  16. 计算机二级offic表格公式,计算机二级OfficeEexcel公式汇总.docx
  17. erp系统有哪些功能模块?
  18. linux 加固检测脚本,Linux系统检测和防护脚本
  19. nmap 安装和使用
  20. 计算机中模板与母版的区别,模板和模版有啥区别?

热门文章

  1. 我是这么自学Java的
  2. 微信App支付接入步骤支付中前后端交互流程
  3. iPhone手机上最不起眼的5款APP,用过的人都赞不绝口!
  4. 微信小程序富文本去除首行缩进样式_小程序富文本处理wxParse
  5. Loadrunner12实现手机APP压力测试
  6. UEditor 实现新增“转换简体”和“转换繁体字”按钮功能
  7. 无法访问工作组计算机修复工具,局域网共享一键修复工具
  8. 同态滤波与Retinex
  9. 用 Python 实现植物大战僵尸代码
  10. 有没有一种软件,可以输入乐谱就能自动演奏的?