任务:爬取某公开网站上的汽车用户消费投诉数据('http://tousu.315che.com/tousulist/serial/55467/'),字段包含品牌、投诉内容、品牌车型、单号、投诉问题、投诉时间和经销商,并为完成后续项目做准备。

(1)获取所有品牌名称、链接

(思路:首先向网页发送请求、解析网页,可利用xpath或者beautifulsoup中的find、find_all方法进行品牌名称、链接的提取。)

#(1)获取所有品牌名称、链接

import requests

from lxml import etree

url = 'http://tousu.315che.com/tousulist/serial/55467/'

#发送请求

rq = requests.get(url)

rq.text #获取到的内容是乱码的

rq.encoding = 'UTF-8' #设置编码

#网页解析

html = etree.HTML(rq.text)

#提取数据

brand_name = html.xpath('//*[@id="letterTabList"]/div/a/text()') #品牌名称

brand_link = html.xpath('//*[@id="letterTabList"]/div/a/@href') #品牌链接

#剔除非网址数据

print('处理前的品牌数量为:',len(brand_name), ',品牌链接数量为:',len(brand_link))

ind = brand_link.index('javascript:;') #得到非网址数据所对应的索引位置

del brand_link[ind] #索引回原始数据进行删除

del brand_name[ind]

print('处理后的品牌数量为:',len(brand_name), ',品牌链接数量为:',len(brand_link))

(2)进入单个品牌的界面,爬取其全部投诉的页面网址

(思路:单个品牌可能只有一页的投诉网址,那么直接对该投诉网址发送请求、解析网页、提取数据即可。但是,单个品牌有些有多页的投诉网址,如大众。这时需要找到多页投诉网址间的规律,这其中肯定是需要知道该品牌投诉网址的总页数。投诉网址的总页数可通过投诉宗数除以9得到(因为一个页面只呈现9个投诉网址)。那么各投诉网址之后就可以利用for循环分别发送请求、解析网页、提取数据。如果要对多个品牌进行操作的话,则在外层写for循环即可,循环每一个品牌链接。。同样的,提取到的数据需要全部汇总在一起。)

#①获取第一个品牌的第一页投诉网址中的投诉详情链接

#发送请求

rq1 = requests.get(brand_link[0])

rq1.text

rq1.encoding = 'UTF-8' #设置编码

#网页解析

html1 = etree.HTML(rq1.text)

#提取数据

tousu_link = html1.xpath('/html/body/div[1]/div[2]/div[2]/div[1]/div[2]/div[2]/ul/li/a/@href') #投诉链接

brand_link[0]这个链接下面的“Artega”品牌刚好只有1页的投诉链接,所以这个品牌的投诉链接都爬取完成。

但是像大众这个品牌下是有很多页的投诉链接。所以这时需要找到多页投诉网址间的规律,这其中肯定是需要知道该品牌投诉网址的总页数。投诉网址的总页数可通过投诉宗数除以9得到(因为一个页面只呈现9个投诉网址)。那么各投诉网址之后就可以利用for循环分别发送请求、解析网页、提取数据。

#②获取大众品牌(有多页投诉网址)的投诉详情链接

import math

#发送请求

rq1 = requests.get('http://tousu.315che.com/tousulist/serial/93/')

rq1.text #乱码

rq1.encoding = 'UTF-8' #设置编码

#网页解析

html1 = etree.HTML(rq1.text)

#提取数据

counts = html1.xpath('/html/body/div[1]/div[2]/div[2]/div[1]/div[2]/div[1]/span/em/text()') #投诉宗数

pages = math.ceil(int(counts[0])/9) #math.ceil表向上取整,即小数部分直接舍去,并向正数部分进1

# http://tousu.315che.com/tousulist/serial/93/0/0/0/1.htm

# http://tousu.315che.com/tousulist/serial/93/0/0/0/2.htm

# http://tousu.315che.com/tousulist/serial/93/0/0/0/3.htm

urls = [] #构建空列表存放当前品牌的投诉网址

for j in range(1, pages+1):

u = 'http://tousu.315che.com/tousulist/serial/93/' + '0/0/0/' + str(j) +'.htm'

urls.append(u)

all_tousu_link = [] #构建空列表存放全部投诉链接

for k in urls[:5]: #此处演示只爬取前5个投诉网址

#发送请求

rq2 = requests.get(k)

rq2.encoding = 'UTF-8'

#解析网页

html2 = etree.HTML(rq2.text)

#提取数据

tousu_link = html2.xpath('/html/body/div[1]/div[2]/div[2]/div[1]/div[2]/div[2]/ul/li/a/@href') #投诉链接

all_tousu_link.extend(tousu_link)

append和extend的区别

list1 = ['a','b']

list2 = ['c','d']

list1.append(list2) #整个列表追加到列表后面

list1.extend(list2) #一个一个元素追加到列表后面

任务(2)完整的爬取过程如下,其实就是在上面”大众“品牌代码的基础上写一个for循坏爬取每个品牌的投诉链接。

#全部品牌的投诉链接爬取

import math

all_tousu_link = [] #构建空列表存放全部投诉链接

for i in range(0, 5): #如果要爬取多页的话,更改”5“这个数值即可

print('正在爬取' + brand_name[i] +'品牌')

#发送请求

rq1 = requests.get(brand_link[i])

rq1.text #乱码

rq1.encoding = 'UTF-8' #设置编码

#网页解析

html1 = etree.HTML(rq1.text)

#提取数据

counts = html1.xpath('/html/body/div[1]/div[2]/div[2]/div[1]/div[2]/div[1]/span/em/text()') #投诉宗数

pages = math.ceil(int(counts[0])/9) #投诉总页数。math.ceil表向上取整,即小数部分直接舍去,并向正数部分进1

urls = [] #构建空列表存放当前品牌的投诉网址

for j in range(1, pages+1):

u = brand_link[i] + '0/0/0/' + str(j) +'.htm'

urls.append(u)

for k in urls:

#发送请求

rq2 = requests.get(k)

rq2.encoding = 'UTF-8'

#解析网页

html2 = etree.HTML(rq2.text)

#提取数据

tousu_link = html2.xpath('/html/body/div[1]/div[2]/div[2]/div[1]/div[2]/div[2]/ul/li/a/@href') #投诉链接

#存储数据

all_tousu_link.extend(tousu_link)

(3)循环所有投诉页面,爬取其中的数据(品牌、投诉内容、品牌车型、单号、投诉问题、投诉时间和经销商)

思路:循环每个投诉页面网址,发送请求、解析网页、提取数据、保存数据。

python汽车用户消费投诉数据爬取_爬虫案例:汽车用户消费投诉数据爬取相关推荐

  1. python电影评论的情感分析流浪地球_爬虫实例 | Python爬取《流浪地球》豆瓣影评与数据分析(下)...

    [芝麻IP代理]三.数据分析与可视化 1.获取cookies 城市信息筛选中文字 匹配pyecharts支持的城市列表 2.基于snownlp的情感分析 关于snownlp的作用,主要可以进行中文分词 ...

  2. python爬取二级页面_爬虫代码改进(二)|多页抓取与二级页面

    本文是下面两篇文章的续篇 本系列包括如下内容抓取豆瓣top250一页多个字段 整合成列表 存储为json文件 定义成函数形式 多页抓取之构造url 多页抓取之翻页 抓取二级页面数据 通过生成器优化代码 ...

  3. python爬虫入门实战---------一周天气预报爬取_Python爬虫入门实战--------一周天气预报爬取【转载】【没有分析...

    Python爬虫入门实战--------一周天气预报爬取[转载][没有分析 Python爬虫入门实战--------一周天气预报爬取[转载][没有分析] 来源:https://blog.csdn.ne ...

  4. webscraper多页爬取_爬虫工具实战篇(Web Scraper)- 京东商品信息爬取(原创)

    一.背景与目的 数字化营销时代,快速掌握了解数据是一项基本技能,本文主要讲解里面Web Scraper工具如何爬取公开数据,比如爬取京东的店铺售卖商品情况数据,以便我们更好地了解竞品对手的产品情况和定 ...

  5. python 3d大数据可视化软件_最受欢迎的大数据可视化软件

    最受欢迎的大数据可视化软件 发布时间:2020-05-26 想像阅读书本一样阅读数据流?这只有在电影中才有可能发生. 在现实世界中,企业必须使用数据可视化工具来读取原始数据的趋势和模式. 大数据可视化 ...

  6. python实时股票数据折线图_如何获取实时的股票数据?

    rcurl抓取问财财经搜索网页股票数据 问财财经搜索是同花顺旗下的服务之一,主要针对上市公司的公告.研报.即时新闻等提供搜索及参考资料.相对于其他股票软件来说,一个强大之处在于用自然语言就可以按你指定 ...

  7. 苏宁大数据怎么运营_数据驱动经营 苏宁大数据用户标签入选2019TOP100全球软件案例...

    11月14日-17日,2019TOP100全球软件案例研究峰会(TOP100summit)在北京国家会议中心举办,此次会议以"数字化转型与指数组织创新战略"为主题,吸引了数百位科技 ...

  8. 苹果手机隐私分析数据是什么_苹果公司以用户为中心的隐私保护方法能教给我们什么?

    苹果手机隐私分析数据是什么 重点 (Top highlight) Moving beyond the rollercoaster of excitement and controversy Apple ...

  9. 商户后台返回数据签名错误_微信小程序 用户信息开放数据校验与解密

    服务端获取开放数据 小程序可以通过各种前端接口获取微信提供的开放数据.考虑到开发者服务端也需要获取这些开放数据,微信提供了两种获取方式: 方式一:开发者后台校验与解密开放数据 方式二:云调用直接获取开 ...

最新文章

  1. 面试题:如何理解 Linux 的零拷贝技术?
  2. 实验室电子设备选型-2020-年末
  3. ‘numpy.float64‘ object is not callable
  4. python写游戏脚本-使用Python写一个小游戏
  5. 路由器原理及作用以及交换机
  6. openharmony编译报错ubuntu20.04按照官方文档,hb set报错为OHOS ERROR] Invalid vendor path: /home/openharmony/vendor
  7. 老子《道德经》第三十三章
  8. opengl 教程(18) 漫反射光
  9. gtest简短,简单易用
  10. 智能优化算法应用:基于GWO优化的二维最大熵图像阈值分割 - 附代码
  11. mysql的四大线程_阿里一面就凉了:MySQL+多线程+Redis+算法+网络一个都没说明白...
  12. 前端使用Aliplayer 播放器 播放rtmp直播流
  13. 深入理解计算机系统----第四章处理器体系结构
  14. 小米路由做文件共享服务器,群晖NAS+小米路由器文件直接传输
  15. Adobe Spark试用手记
  16. 本世纪最好的NSA!
  17. 【手把手反内卷】开创全新AI多模态任务一视听分割:代码实践、优化教程(二)
  18. matlab将数据写入到excel中
  19. Python:实现GrabCut算法(附完整源码)
  20. service mysqld restart与service mysql restart的区别

热门文章

  1. 四面阿里斩获offer定级P7,2021最新最全阿里巴巴68道高级面试题
  2. RGB_TTL、LVDS、MIPI接口液晶屏学习笔记
  3. 华为运营商级路由器配置示例 | EVdPdNd L3VdPdNdv6 over SRv6 BE ECMP
  4. 夜神模拟器安装fiddler证书显示“游戏安装包可能异常”
  5. java显示1到n的整数值的平方
  6. 1.5 Web前端:常用CSS样式2:其它样式
  7. 银河麒麟aarchQt5.12.0 QtFontDatabase: Cannot find font directory
  8. 【算法分析】分治法详解+范例+习题解答
  9. 企业上云之路-如何评估上云风险(读书笔记)
  10. php httponly_xss防御之php利用httponly防xss攻击