数据爬取到可视化分析

本文详细介绍了Python数据爬取的基本概念、流程,包括Python的简介、网络爬虫的定义,以及常用的网页解析库如BeautifulSoup和etree。接着讨论了数据清洗,包括数据格式统一和特殊字符处理。最后,探讨了数据分析和可视化,利用pandas进行数据处理,并通过matplotlib进行图表展示,以2020年初的疫情数据为例展示了如何进行数据分析和可视化。
摘要由CSDN通过智能技术生成

一、数据爬取

1.python简介

  1. Python的创始人为荷兰人吉多·范罗苏姆 (Guido van Rossum)。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC 语言的一种继承。之所以选中Python(大蟒蛇的意思)作为该编程语言的名字,是取自英国20世纪70年代首播的电视喜剧《蒙提.派森的飞行马戏团》(Monty Python’s Flying Circus)。

  2. Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。Python支持重载运算符和动态类型。相对于Lisp这种传统的函数式编程语言,Python对函数式设计只提供了有限的支持。

  3. Python缺点,其一是速度慢:和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会- -行-行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快。其二是无法加密:如果要发布你的 Python程序,实际上就是发布源代码,这-点跟C语言不同,C语言不用发布源代码,只需要把编译后的机器码(也就是你在Windows.上常见的xx.exe文件)发布出去。要从机器码反推出C代码是不可能的,所以,凡是编译型的语言,都没有这个问题,而解释型的语言,则必须把源码发布出去。

  4. Python在设计上坚持了清晰划一的风格,这使得Python成为一门易读、易维护、开源、高层语言、可移植、面向对象、可扩展、可嵌入、丰富的库,并且被大量用户所欢迎的、用途广泛的语言。

2.什么是网路爬虫

网络爬虫,又称网页蜘蛛(webspider),是一个功能强大的能够自动提取网
页信息的程序,它模仿浏览器访问网络资源,从而获取用户需要的信息,它可以为搜索引擎从万维网上下载网页信息,因此也是搜索引擎的重要组成部分。
根据爬取的对象、使用的结构及技术,爬虫可分为:

  1. 通用型爬虫
    该爬虫又称为全网爬虫,主要用在搜索引擎,从初始的URL到全网页面,但需要的存储容量大,速度要求快,工作性能强大。.
  2. 聚焦型爬虫
    该爬虫专注某一方面,只搜索事先定义的关键信息。
  3. 增量型爬虫
    每隔一段时间更新,重新爬取,更新数据库。

怎么来用python爬虫,这里可以用python强大的丰富的标准库及第三方库来完成。这是爬虫的核心部分。尤其是对网页的解析,可使用正则表达式、BeautifulSoup、 lxml 来解析网页,三种方法各有千秋,使用时可根据用户的熟练程度和需要选择-种适合的解析方法。

3.网页解析

  1. BeautifulSoup
Bs4数据解析的原理:
1、实例化一个BeautifulSoup对象。并且将页面源码数据加载到该对象中
	-1.将本地的html文档中的数据加载到该对象中
		htmlPath = 'text.html .
		fp=open( htmlPath, 'r' ,encoding='utf-8')
		#将本地的html文档中的数据加载到该对象中
		soup=BeautifulSoup(fp,'1xm1')
	-2.将互联网上获取的页面源码加载到该对象中
		page_ text=response. text
		soup=BeautifulSoup(page_ text,' 1xm1')

2、通过调用BeautifulSoup对象中相关的属性或者方法进行标签定位和数据提取
	-1.find()方法
		-soup.a返回a标签第-次出现的内容
		-soup.find('div')返回div标签第一次出现的内容
		# 属性定位返回到某一个标签
		soup.find('div',class_='song' )
		-soup.find_ all('a')返回符合要求的所有标签(列表)
	
	-2.select()方法
		-soup.select('.某种选择器(id,class,标签,选择器) ') (列表)
		-层级选择器:(列表)>”大于号表示一个标签
		-soup.select('.tang > ul > li > a')[1]”
		空格表示多个连接标签
		-soup. select('.tanga')[1]
		
	-3.获取标签之间的文本数据:
		-text/get_ text(): 只可以获取该标签下所有的文本内容
		-string:只可以获取该标签下直系的文本内容
		-soup.a.text/string/get_ text( )
		
	-4.获取标签中的属性值:
		-soup.a['href']

Beautiful Soup提供一些简单的、 python 式的函数来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式, 这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为妒灵活地提供不同的解析策略或强劲的速度。

  1. etree
xpath解析原理:
1、实例化一个etree的对象,且需要将被解析的页面源码数据加载到该对象中。
	-1.将本地的html文档中的源码数据加载到etree对象中:
		htmlPath = 'text.html 
		etree. parse(htmlPath)
	-2.可以将从互联网上获取的源码数据加载到该对象中
		page_ text=response.text
		tree=etree.HTML('page_ text')
		xpath(-xpath表达式)

2、调用etree对象中的xpath方法结合着xpath表达式实现标签的定位和内容的捕获。
	-1.xpath()方法
		-tree.xpath('/html/body/div') (列表)
		-定位到某个类
		-“div[@/class=”类名”]-2.层级选择器:(列表)//”双斜杠表示间接的子孙标签
		-tree.xpath('//div[@class="song"]/p[3]')/”单斜杠表示表示直接的子标签
		-tree .xpath('/html/body/div[@class="song"]/p[3]')
	-3.获取标签之间的文本数据:
		-text/text():只可以获取该标签下所有的文本内容
		-tree.xpath( '//div[@class="tang"]//li[5]/a/text()')[0]
		-string:只可以获取该标签下直系的文本内容
		-tree.xpath( '//div[@class="tang"]//li[5]/a/string()')[0]
	-4.获取标签中的属性值:
		-/@”来声明属性后面在加属性名 (/@src或者/@href)
		-tree . xpath(' / /div[@class="song"]/ img/@src')[0]

etree.HTML()可以用来解析字符串格式的HTML文档对象,将传进去的字符串转变成_ Element对象。 作为_ Element对象,可以方便的使用getparent()、 remove()、 xpath()方法。如果想通过xpath获取html源码中的内容,就要先将html源码转换成_Element对象, 然后再使用xpath()方法进行解析

4.数据爬取流程

对任何一个网页进行数据爬取的流程基本上是一样。

1. 开发环境安装
(1)从win的cmd命令下载
	pip install lxml
	pip install bs4
	pip install requests
	pip csv
(2)从开发工具PyCharm设置下载
2.模块导入
需要导入的模块如下:
import requests
from lxml import etree
from bs4 import BeautifulSoup
import re
Import os
import csv
3.指定url
	给出要获取的网页的网站地址url
4.数据请求
	对指定的url可以使用get()、post()方法进行请求。
	Get()请求使用较多对于那些没有对输入数据发请求的;
	post()请求用于对要隐蔽性的用户输入信息的。
5.数据获取
	对数据的获取有三种:分别是text、json、content.
	text获取通过调用响应对象的text属性,返回响应对象中存储的字符串形式的响应数据(页面源码数据);
	json获取返回是0BI。
	content获取对象一般都是图片类型的,返回的是响应对象中存储的二进制形式的响应数据。
6.数据解析
	使用lxml、bs4、正则表达式、来解析要获取信息的html
	对获取的html进行分析,然后对直接需要获取的信息的html字段进行解析,一直解析到直接需要的信息文本或者链接属性值。然后在对获取的url进行发起请求、数据获取、数据解析、数据存储,循环这个操作就获取到信息
7.数据存储
	将获取的信息可以储存起来,可以是以列表、数组、字典、集合、txt、html、csv、数据库、img等等形式存放

示例:我们对一个网站来实例化爬取一个,对搜狐体育新闻的NBA的所有新闻信息进行爬取,这里代码是自己写的(该网站是一个动态的需要懒加载的网站信息,毕竟是一个新闻网站,信息都是实时更新的)

#导入模块
import requests
import os
from lxml import etree
from selenium import webdriver
from lxml import etree
from time import sleep
import urllib3
urllib3.disable_warnings()
# from requests.packages.urllib3.exceptions import InsecureRequestWarning
from bs4 import BeautifulSoup
driver = webdriver.Chrome(executable_path='../pc/chromedriver.exe')
#信息保存
list_URL_1=[]
#NBA的所有队的信息
list_URL_2=[]
list_NMAE_2=
  • 7
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值