爬取汽车之家的所有车型,价格,及配置

刚接触python爬虫不久,不知道写太牛掰的代码,都是些很简单的运用,因为好奇所以想爬一下汽车类的数据,我选的是汽车之家这个网站,爬取汽车之家之前浏览了一下原网页代码和手机端的代码都不太好爬,毕竟我现在所学到的东西太少了,后来发现可以从官网利用字母查询车的地方获取里面的url来抓取数据,只需要将这些url拼接在一起就是一些车的详情图了.见下图1.

红框里面的就是我们需要的汽车品牌了 原址是https://car.autohome.com.cn

既然我们的方法是拼接url来获取数据,我第一步做的是获取到拼接url的后半部分,大家可以先不用理会我addurl这列表里的数据,因为这是我拿不到所以用的一种蠢办法,

import requests
from lxml import etree
import pymysqlclass get_url():def __init__(self,base_url):self.base_url=base_urlself.headers={'user - agent': 'Mozilla / 5.0(Windows NT 6.1;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 76.0.3809.100Safari / 537.36'}self.parse()def parse(self):addurl=['/price/list-0-0-0-0-0-0-0-0-33-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-15-0-0-0-0-0-0-2.html', '/price/list-0-0-0-0-0-0-0-0-36-0-0-0-0-0-0-2.html', '/price/list-0-0-0-0-0-0-0-0-36-0-0-0-0-0-0-3.html','/price/list-0-0-0-0-0-0-0-0-14-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-75-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-76-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-163-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0-2.html', '/price/list-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0-3.html','/price/list-0-0-0-0-0-0-0-0-32-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-3-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-8-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-96-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-86-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-25-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-25-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-83-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-62-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-63-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-12-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-110-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-94-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-15-0-0-0-0-0-0-3.html',]addname=[]response=requests.get(self.base_url,headers=self.headers)# print(response.status_code)response.encoding='gbk'html=etree.HTML(response.text)# print(html)div = html.xpath('//dl[@class="search-dl"]/dd/div')[5:31]      #这后面的[5:31]是拿第五个div到第三十一个div,具体看上图为什么这样做# print(div)                                        #这里拿到的就是所有车型后面半截urlfor i in div:                                        #遍历获取到的所有divname = i.xpath('./span[@class="open-name"]/a/text()')  #这个是车的品牌名url = i.xpath('./span[@class="open-name"]/a/@href')      #这个就是url了  addname.extend(name)addurl.extend(url)                                               #我们在上面定了个列表将数据存进去# print(addurl,addname)self.joint(addurl, addname)     #这个是执行下一个函数的入口return addurl,addnameif __name__ == '__main__':base_url= 'https://car.autohome.com.cn/'get_url(base_url)

第二步,获取到了url 我们就要开始拼接了

    def joint(self,addurl,addname):# print(addurl)         #这里是检查数据有没有传过来first_url=[]              #定义列表是为了存放拼接好的urlnew_url='https://car.autohome.com.cn'      #因为前半部分url是固定的所以我们可以这样设置以便拼接for i in addurl:    #循环我们传过来的后半部url# print(i)newurl=(new_url)+i    #拼接起来first_url.append(newurl)     #存到新列表# print(first_url)self.joinurl(first_url,addname)    #下一个函数入口return first_url

第三步, 获取好了完整连接我们就可以遍历他然后xpath获取里面的数据了
稍等一下, 忘记一件事,我们在分析页面的时候会发现,有些车的品牌不在售所以没有url,正常情况来说href里面是放的后半部分url的所以这种情况我们就要将上面获取到的数据做一个判断

 def joinurl(self,first_url,addname):second_url=[]                                for i in first_url:if i == 'https://car.autohome.com.cn#!':        #因为上一步我们已经拼接好了 , 所以如果是没有在售的url ,                                                       del i                                      #拼接出来的就是这样的效果,这个url是获取不到我们想要的页面的,#所以我们在这里做个判断如果是为这种空网址的我们就删掉,其余的则保存到新的列表里.else:second_url.append(i)# print(second_url)self.join_url_content(second_url,)return second_url

第四步,当我们现在获取到完完全全的url后就能放心的获取数据了

    def join_url_content(self,second_url):for i in second_url:# print(i)response = requests.get(url=i,headers=self.headers)# print(response.status_code)content= etree.HTML(response.text)# print(content)img=content.xpath('//div[@class="list-cont-img"]/a/img/@src')# print(img)car_name=content.xpath('//div[@class="main-title"]/a/text()')print(car_name)car_price = content.xpath('//span[@class="font-arial"]/text()')# print(car_price)car_type = content.xpath('//span[@class="info-gray"]/text()')# print(car_type)on_sale = content.xpath('//div[@class="interval01-list-cars-infor"]/p/a/text()')print(on_sale)

获取到的数据其实蛮多的,需要花点时间等待,但是我们可以看到有些地方数据还是少了!这时我发现竟然还有个分页的东西,见下图
,所以呢 ,你们知道我最上面的那个addurl 是干嘛的吧,就是所有车型分页的url ,分页也是我根据页面元素去找的,他都有显示.
如果后期需要爬配置也可以根据这个方法去找到配置所指引的url,根据url去爬取里面的数据.

下面是我全部代码还没有写完,但是数据都能拿得到 ,拿得到数据就可以了,代码可能写的不是很好看,也有些啰嗦,希望有大牛来指点教我更简单的方法

import requests
from lxml import etree
import pymysqlclass get_url():def __init__(self,base_url):self.base_url=base_urlself.headers={'user - agent': 'Mozilla / 5.0(Windows NT 6.1;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 76.0.3809.100Safari / 537.36'}self.parse()def parse(self):addurl=['/price/list-0-0-0-0-0-0-0-0-33-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-15-0-0-0-0-0-0-2.html', '/price/list-0-0-0-0-0-0-0-0-15-0-0-0-0-0-0-3.html','/price/list-0-0-0-0-0-0-0-0-36-0-0-0-0-0-0-2.html', '/price/list-0-0-0-0-0-0-0-0-36-0-0-0-0-0-0-3.html','/price/list-0-0-0-0-0-0-0-0-14-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-75-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-76-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-163-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0-2.html', '/price/list-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0-3.html','/price/list-0-0-0-0-0-0-0-0-32-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-3-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-8-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-96-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-86-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-25-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-25-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-83-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-62-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-63-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-12-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-110-0-0-0-0-0-0-2.html','/price/list-0-0-0-0-0-0-0-0-94-0-0-0-0-0-0-2.html',]addname=[]response=requests.get(self.base_url,headers=self.headers)# print(response.status_code)response.encoding='gbk'html=etree.HTML(response.text)# print(html)div = html.xpath('//dl[@class="search-dl"]/dd/div')[5:31]# print(div)for i in div:name = i.xpath('./span[@class="open-name"]/a/text()')url = i.xpath('./span[@class="open-name"]/a/@href')addname.extend(name)addurl.extend(url)# print(addurl,addname)self.joint(addurl, addname)return addurl,addnamedef joint(self,addurl,addname):# print(addurl)first_url=[]new_url='https://car.autohome.com.cn'for i in addurl:# print(i)newurl=(new_url)+ifirst_url.append(newurl)# print(first_url)self.joinurl(first_url,addname)return first_urldef joinurl(self,first_url,addname):second_url=[]for i in first_url:if i == 'https://car.autohome.com.cn#!':del ielse:second_url.append(i)# print(second_url)self.join_url_content(second_url,)return second_urldef join_url_content(self,second_url):for i in second_url:# print(i)response = requests.get(url=i,headers=self.headers)#         # print(response.status_code)content= etree.HTML(response.text)# print(content)img=content.xpath('//div[@class="list-cont-img"]/a/img/@src')# print(img)car_name=content.xpath('//div[@class="main-title"]/a/text()')print(car_name)#         car_price = content.xpath('//span[@class="font-arial"]/text()')#         # print(car_price)#         car_type = content.xpath('//span[@class="info-gray"]/text()')#         # print(car_type)#         on_sale = content.xpath('//div[@class="interval01-list-cars-infor"]/p/a/text()')#         print(on_sale)if __name__ == '__main__':base_url= 'https://car.autohome.com.cn/'get_url(base_url)

爬取汽车之家所有车型,价格,配置相关推荐

  1. python爬虫实战 爬取汽车之家上车型价格

    相关库 import pymysql import pymysql.cursors from bs4 import BeautifulSoup import requests import rando ...

  2. python3 selenium webdriver.Chrome php 爬取汽车之家所有车型详情数据[开源版]

    介绍 本接口是车型库api的补充,用于爬取汽车之家所有车型详情数据 开源地址:https://gitee.com/web/CarApi/tree/master/python 软件架构 python3 ...

  3. Python爬取汽车之家所有车型数据,以后买车就用这个参考了

    欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练.大航海计划.BAT内推.学习资料等. 前言 2018年马上就要过去了,经过一年的奋斗,我相 ...

  4. python3 爬取汽车之家所有车型数据操作步骤(更新版)

    题记: 互联网上关于使用python3去爬取汽车之家的汽车数据(主要是汽车基本参数,配置参数,颜色参数,内饰参数)的教程已经非常多了,但大体的方案分两种: 1.解析出汽车之家某个车型的网页,然后正则表 ...

  5. python3 爬取汽车之家所有车型操作步骤

    2019独角兽企业重金招聘Python工程师标准>>> 题记: 互联网上关于使用python3去爬取汽车之家的汽车数据(主要是汽车基本参数,配置参数,颜色参数,内饰参数)的教程已经非 ...

  6. python3实例车代码_python3 爬取汽车之家所有车型数据操作步骤(更新版)

    题记: 互联网上关于使用python3去爬取汽车之家的汽车数据(主要是汽车基本参数,配置参数,颜色参数,内饰参数)的教程已经非常多了,但大体的方案分两种: 1.解析出汽车之家某个车型的网页,然后正则表 ...

  7. WebMagic爬虫入门教程(三)爬取汽车之家的实例-品牌车系车型结构等

    本文使用WebMagic爬取汽车之家的品牌车系车型结构价格能源产地国别等:java代码 备注,只是根据url变化爬取的,没有使用爬取script页面具体的数据,也有反爬机制,知识简单爬取html标签 ...

  8. 爬取汽车之家图片 - scrapy - crawlspider - python爬虫案例

    爬取汽车之家图片 需求:爬取汽车之家某一个汽车的图片 ​ 一. 普通scrapy 第一步 页面分析 目标url: https://car.autohome.com.cn/photolist/serie ...

  9. PYTHON爬取汽车之家数据

    PYTHON爬取汽车之家数据 使用知识 使用BeautifulSoup模块 使用正则表达式 使用到多线程爬取 使用说明 使用前请安装BeauifulSoup 起始页面: https://www.aut ...

  10. python爬取汽车之家_python爬虫实战之爬取汽车之家网站上的图片

    随着生活水平的提高和快节奏生活的发展.汽车开始慢慢成为人们的必需品,浏览各种汽车网站便成为购买合适.喜欢车辆的前提.例如汽车之家网站中就有最新的报价和图片以及汽车的相关内容,是提供信息最快最全的中国汽 ...

最新文章

  1. R语言临床预测模型的评价指标与验证指标实战:自定义的综合判别改善指标(Integrated Discrimination Improvement, IDI)函数
  2. SQL SERVER 常用日期计算
  3. 希尔排序python实现
  4. GlobalPointer:用统一的方式处理嵌套和非嵌套NER
  5. AI时代的神马搜索!神马智能对话技术深度解读
  6. 生物信息考研C语言,四川大学生物信息学初试经验分享
  7. linux解释名词shell环境,Linux 定时任务
  8. MABN论文的译读笔记
  9. 公安信息通信网边界接入平台安全规范_【市场动态】3.56 亿元,阿里云中标青岛智慧公安项目...
  10. window10运行python弹出商店_Python上架Windows 10应用商店,但主要用于学习,正式项目还...
  11. 算法学习:最小生成树
  12. 腾讯云— LAMP 架构个人实践分享
  13. 数据挖掘招聘关键字分析
  14. r 选取从小到大的数据_r 选取表格的一列数据库
  15. cleanmymac x免费版安装包下载使用教程
  16. 苹果6系统怎么更新不了_苹果12app下载不了软件怎么办-苹果12AppStore下载不了软件解决方法...
  17. 孟庭苇---经典精选怀旧金曲
  18. IDEA主题配置--- 炫酷的主题字体颜色设置(基于Intellij IDEA 2018)
  19. AtCoder Beginner Contest 208
  20. OSPF的区域间防环详解

热门文章

  1. 学习笔记15--车道线检测
  2. 项目沟通管理和干系人管理
  3. 悦然建站分享:记录一下网站加速优化的过程
  4. WORD文档怎么转换成EXCEL
  5. python外国网站爬虫_10分钟教你用python爬取网站信息:这可能是全网最好用的爬虫代码...
  6. 考个ISTQB证书有用吗
  7. How to work with Ant
  8. 两行代码实现精简的网站访问量统计(不蒜子)
  9. JDBC中connection.isClosed 和 connection.isValid的区别
  10. X509TrustManager信任SSL证书