python(数据分析与可视化)二

爬取网页内容的前期技术储备

1.pip包管理

(1)内置库

包/库:别人写好的代码,直接引用,加快开发效率。
内置包:python解释器内置常用功能库。
– 解释器安装目录/Lib文件夹下, os time urllib等
– 文件夹里有__init__.py 就成了一个包。

...
import urllib
from urllib import request
response = request.urlopen('http://baidu.com')
...

(2)关于HTTP模拟和HTML源代码解析

python时代: urllib urllib2
由第三方程序员做了一个新http请求库,比官方更方便,urllib3
又有一个程序员,在urllib3基础上进一步封装和优化,requests
python3时代 内置库统一为urllib
结论:建议直接使用requests

(3)第三方库

pypi.org 上丰富的各种功能的库

①pip包管理工具

在服务器上没有图形界面的浏览器.开发语言第三方库往往用命令行包管理工具
解释器/script/pip.exe

pip -V   # 看Pip版本
pip search requests  #搜索包信息
pip install requests  #安装第三方库
pip uninstall requests #卸载
pip list #展示所有已经安装过的库
pip freeze > requirements.txt #把项目用到的库信息导出到一个文件中

第三方库安装的位置: 解释器目录\lib\site-packages\

②换源

软件源source: 清单里维护了上万的 某某软件-> 某某url下载 库下载地址关系,但官方pypi.org下载速度慢,国内一些大学、大公司同步镜像
方法一:临时换源
‘pip install requests -i http://simply.aliyun.com/simply/’
方法二:永久换
系统用户文件夹下新建.pip文件夹和pip.conf文件,写入配置

方式三(推荐):pycharm设置里面配settings/interpreter/+号/manage repositories/+号 复制源(推荐阿里云)

参考[pip换源](https://www.cnblogs.com/believepd/p/10499844.html)
豆瓣 https://pypi.doubanio.com/simple/
阿里云 https://mirrors.aliyun.com/pypi/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/

2.requests基本用法

requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。Requests 的哲学是以 PEP 20 的习语为中心开发的,所以它比 urllib 更加 Pythoner。下面我以代码的形式简单写其中常用的几个知识点:

import requestsbaidu_index_url = 'https://baidu.com'
baidu_search_url = 'http://baidu.com/s'#仿造请求头,基本反爬虫措施
headers = {#'cookies':'',     #跟公共参数、用户会话有关#'refer':'',       #从哪个页面来#浏览器标识,容易伪造,但肯定是机器人,容易被服务器识别出来'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36'
}params = {'wd':'天气','ie':'utf-8'
}response = requests.get(url=baidu_search_url,params=params)
#状态码
status_code = response.status_code
if status_code == 200:#网页数据 bytescontent = response.content#网页数据str  一般直接取得text属性,但少数情况解码错误出现乱码text = response.texttext = content.decode('utf-8') #只有百度需要()特殊print(text)url = response.urlheaders = response.headers

3.debug模式

debug模式也就是调试运行模式
具体操作过程可以分为三步:
1.打断点
2.以debug运行
3.F8向下执行单步,观察变量值

import requestsresponse = requests.get(url='https://baidu.com', )
# 状态码
status_code = response.status_code
if status_code == 200:# 网页数据 bytescontent = response.content# 网页数据str  一般直接取得text属性,但少数情况解码错误出现乱码text = response.texttext = content.decode('utf-8')print(text)url = response.urlheaders = response.headersfor i in range(10):print(i)j = ij+=1print(1)

4.html解析—正则

①我们已经用requests模拟请求,拿到网页源代码,str字符串,里面HTML模式
#需要分析
字符串自带的find方法功能有限,如下:

html = '<html><body><h1>标题</h1></body></html>'
start_index = html.find('<h1>')
end_index = html.find('</h1>')
print(html[start_index:end_index])

因此有三种解析方法:
解析方式一:正则 regex,专门针对字符串处理的语法
(不推荐,了解即可)

import re
text1 = 'ilikepythonbutyouarebeautiful'
pattern1 = re.compile(r'python')
matcher1 = re.search(pattern1,text1)
print(matcher1[0])text2 = '<h1>i like world</h1>'
pattern2 = re.compile(r'<h1>.+</h1>')  # . 表示一个字符
matcher2 = re.search(pattern2,text2)
print(matcher2[0])text3 = 'beautiful'
text4 = 'you are a good boy'
text5 = '13243454454@qq.com'
#注册验证邮箱#手册  https://tool.oschina.net/uploads/apidocs/jquery/regexp.html
#常用正则 https://www.cnblogs.com/qq364735538/p/11099572.htmltext6 = """
<html>
aaacc<h1>adsd
sss
</h1>
aaaa
</html>
"""
pattern10 = re.compile(r'<h1>(.*?)</h1>',re.S)
print(pattern10.findall(text6))#把网页上HTML目标区域标签复制到上述代码中,像抓取的信息用(.*?)代替

5.html解析—bs库(不推荐,了解即可)

#网页HTML本身就是树状层状结构,按照层次去找
#beautiful-soup库 是python2时代的库,
#适合python3的是beautifulsoup4
#用’pip install beautifulsoup4‘来安装第三方库

from bs4 import BeautifulSoup #小坑:代码包名和包原信息名字不一致html = """
<html><body><a id='xxx' href="https://baidu.com">百度一下</a><a></a></body>
</html>
"""#先把字符串解析成html结构,内置库html.parser  或者第三方库lxml
bs = BeautifulSoup(html,'html.parser') #或者第二个参数填入“lxml”
print(bs.a)
print(bs.find_all('a'))
print(bs.a['href'])
print(bs.a)
#获取父、子标签#总结:bs逻辑直观简单,但代码较多

6.html解析—xpath

#xpath表达式有自己的语法,但没有正则那么复杂,类似bs4库按照html层级查找
#用’pip install lxml‘来进行第三方库的安装

from lxml import etreehtml = """
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8" /><title>lxml中xpath的用法</title>
</head>
<body><ul><li><a href="https://www.baidu.com" class="first_a">百度一下</a></li><li><a href="https://mail.qq.com" id="second_a">QQ邮箱</a></li><li><a href="https://www.taobao.com">淘宝网</a></li><li><a href="https://pypi.python.org" class="first_a">Python官网</a><a href="https://pypi.python.org" class="second_a">Python</a></li></ul><p class="one">first_p_tag</p><p id="second">second_p_tag</p><div class="one">first_div_tag<p class="first second third">11111111</p><a href="#">22222222</a></div>
</body>
</html>
"""#把长字符串转换成html文档树
dom = etree.HTML(html)
print(dom)#默认情况下都是全文匹配,匹配不到返回空列表,匹配到的【element,element】
#  "/"表示往下一层    “//”表示忽略任意层父级目录
dom.xpath('//a')
#取html元素里的属性
# "/@href"取元素属性值
dom.xpath('//a/@href')
#取标签里面的内容 -> "/text()"
print(dom.xpath('//a/text()'))
# 属性过滤
print(dom.xpath('//a[@id="second_a"]/text()')[0])
比较 正则 xpath bs
难度 简单
代码量
可读性

今天的分享就到这里,如果还想了解更多,可以看我主页!

python(数据分析与可视化)二相关推荐

  1. Python数据分析-数据可视化(二)

    欢迎大家访问个人博客:https://jmxgodlz.xyz 文章目录 前言 Matplotlib 折线图格式调整 标签 线条颜色 线条形状 折点样式 线条透明度 前言 看到有些论文插图十分简洁美观 ...

  2. python数据分析可视化实例-Python数据分析与可视化从入门到精通

    (1)没有高深理论,每章都以实例为主,读者参考书中源码运行,就能得到与书中一样的结果.(2)专注于Python数据分析与可视化操作中实际用到的技术.相比大而全的书籍资料,本书能让读者尽快上手,开始项目 ...

  3. python可视化数据分析-Python数据分析与可视化从入门到精通

    (1)没有高深理论,每章都以实例为主,读者参考书中源码运行,就能得到与书中一样的结果.(2)专注于Python数据分析与可视化操作中实际用到的技术.相比大而全的书籍资料,本书能让读者尽快上手,开始项目 ...

  4. [转载] Python数据分析与可视化学习笔记(一)数据分析与可视化概述

    参考链接: Python | 数据分析的数学运算 数据分析与可视化(一) 1.1 数据分析1.1.1 数据.信息与数据分析1.1.2数据分析与数据挖掘的区别1.1.3数据分析的流程 1.2 数据可视化 ...

  5. 【Python数据分析与可视化】Pandas统计分析-实训

    [Python数据分析与可视化]Pandas统计分析-实训 文章目录 [Python数据分析与可视化]Pandas统计分析-实训 导包 读取数据 分析数据 1.查看数据的描述和统计信息: 2.修改列名 ...

  6. python数据分析入门【二】 --- 数据处理

    python数据分析入门[二] - 数据处理 上一章内容python数据分析入门[一] - DataFrame & Series 下一章内容python数据分析入门[三] - 数据分析 文章目 ...

  7. python数据分析与可视化【一】python基础实例

    用python做数据分析与可视化(一) python编程基础 这一块前面我写过博客,奉上链接:python基础 这篇就来看看几个小实例 后面有python很基础的知识点和例子 后面数据分析能用上 下一 ...

  8. 【Python数据分析与可视化】期末复习笔记整理(不挂科)

    [Python数据分析与可视化]期末复习笔记 1. 数据分析与可视化概述 对比 概念 常用工具 Python常用类库 Jupyter notebook中的常用快捷方式 2. Python编程基础 co ...

  9. Python数据分析与可视化学习笔记(一)数据分析与可视化概述

    数据分析与可视化(一) 1.1 数据分析 1.1.1 数据.信息与数据分析 1.1.2数据分析与数据挖掘的区别 1.1.3数据分析的流程 1.2 数据可视化 1.3 数据分析与可视化常用工具 1.4 ...

  10. python数据分析与可视化清华大学_Python数据分析与可视化 微课视频版

    随着互联网的飞速发展,人们在互联网上的行为产生了海量数据,对这些数据存储.处理与分析带动了大数据技术的发展.其中,数据挖掘和分析技术可以帮助人们对庞大的数据进行相关分析,找到有价值的信息和规律,使得人 ...

最新文章

  1. 你知道Integer和int的区别吗
  2. webcomponents安装了没有用_Web Components 入门实例教程
  3. ADO.NET与Sql Server和Access的连接
  4. `object.__new__`应用
  5. python必背代码-Python高手必修课:如何让 Python 代码更易读,推荐收藏
  6. 智能优化算法应用:基于灰狼算法的二维Otsu图像阈值分割-附代码
  7. 【odoo15】如何使用 python xmlrpc 连接 odoo
  8. ppt字体颜色如何修改
  9. phpspider 的简单使用
  10. 三度冲刺IPO,负债率超70%的喜相逢能否成功敲钟?
  11. TTL电平信号和RS232信号波形对比
  12. 系统重装之后如何恢复mysql数据
  13. android 获取本地图片路径
  14. FRM1 P1B1P1B2 整理笔记
  15. 国产FPGA(紫光同创)—— 数据采集及千兆以太网传输(二)
  16. C# Roslyn编写脚本数据交互示例
  17. 阿里旺旺 V5.60.03W
  18. Neo4j教程网盘下载
  19. “北斗一号”卫星导航系统与GPS系统比较
  20. 朗强:会议控制系统设备信号hdmi传输器有哪些

热门文章

  1. 又被zblogPHP交流群禁言了
  2. 【代码】QQ群最近聊天记录做成词云
  3. SDN网络对比传统网络
  4. 智能手机行业利润图解:苹果占65%远超其他厂商
  5. 高中数学必修5知识点:第二章数列
  6. 免费DDNS解析教程
  7. vs code-live server-保存文件后浏览器自动刷新页面
  8. websocket接口自动化集成pytest测试框架详解
  9. 网络渗透测试学习一之网络扫描与网络侦察
  10. 基于opencv的巡线方案