python网络爬虫需要装库吗 python和网络爬虫选哪个好
2023年11月20日 每日一猜答案:。 答案:ABC。 每日一猜答案分析:
python网络爬虫需要学什么,python网络爬虫需要什么软件,python爬虫需要什么,python爬虫需要哪些软件用管理员身份打开命令提示符:
测试:打开IDLE:
超文本传输协议,Hypertext Transfer Protocol.
HTTP是一个基于“请求与响应”模式的、无状态的应用层协议。
HTTP协议采用URL作为定位网络资源的标识。
host:合法的Internet主机域名或IP地址
port:端口号,缺省端口为80
path:请求资源的路径
方法 | 说明 |
---|---|
GET | 请求获取URL位置的资源 |
HEAD | 请求获取URl位置资源的响应消息报告,即获得该资源的头部信息 |
POST | 请求向URL位置的资源后附加新的数据 |
PUT | 请求向URL位置存储一个资源,覆盖原URL位置的资源 |
PATCH | 请求局部更新URL位置的资源,即改变该处资源的部分内容 |
DELETE | 请求删除URL位置存储的资源 |
方法 | 说明 |
---|---|
requests.request() | 构造一个请求,支撑以下各方法的基础方法 |
requests.get() | 获取HTML网页的主要方法,对应于HTTP的GET |
requests.head() | 获取HTML网页头信息的方法,对应于HTTP的HEAD |
requests.post() | 向HTML网页提交POST请求的方法,对应于HTTP的POST |
requests.put() | 向HTML网页提交PUT请求的方法,对应于HTTP的PUT |
requests.patch() | 向HTML网页提交局部修改请求,对应于HTTP的PATCH |
requests.delete() | 向HTML网页提交删除请求,对应于HTTP的DELETE |
主要方法为request方法,其他方法都是在此方法基础上封装而来以便使用。
**kwargs:控制访问的参数,均为可选项
get()方法:
构造一个向服务器请求资源的Request对象
返回一个包含服务器资源的Response对象
Response对象
属性 | 说明 |
---|---|
r.status_code | HTTP请求的返回状态,200表示连接成功,404表示失败 |
r.text | HTTP响应内容的字符串形式,即:url对应的页面内容 |
r.encoding | 从HTTP header中猜测的响应内容编码方式 |
r.apparent_encoding | 从内容中分析出的响应内容编码方式(备选编码方式) |
r.content | HTTP响应内容的二进制形式 |
获取网络资源的概要信息
向服务器提交新增数据
同post,只不过会把原来的内容覆盖掉。
异常 | 说明 |
---|---|
requests.ConnectionError | 网络连接错误异常,如DNS查询失败、拒绝连接等 |
requests.HTTPError | HTTP错误异常 |
requests.URLRequired | URL缺失异常 |
requests.TooManyRedirects | 超过最大 重定向次数,产生重定向异常 |
requests.ConnectTimeout | 连接远程服务器超时异常 |
requests.Timeout | 请求URL超时,产生超时异常 |
异常方法 | 说明 |
---|---|
r.raise_for_status | 如果不是200产生异常requests.HTTPError |
测试:
Beautiful Soup库是解析、遍历、维护“标签树”的功能库
Beautiful Soup库,也叫beautifulsoup4或bs4.
基本元素 | 说明 |
---|---|
Tag | 标签,最基本的信息组织单元,分别用<>和</>标明开头和结尾 |
Name | 标签的名字, ... 的名字是'p',格式:.name |
Attributes | 标签的属性,字典形式组织,格式:.attrs |
Na【【微信】】 | 标签内非属性字符串,<>...</>中字符串,格式:.string |
Comment | 标签内字符串的注释部分,一种特殊的Comment类型 |
属性 | 说明 |
---|---|
.contents(列表类型) | 子节点的列表,将所有儿子节点存入列表 |
.children | 子节点的迭代类型,与.contents类似,用于循环遍历儿子节点 |
.descendants | 子孙节点的迭代类型,包含所有子孙节点,用于循环遍历 |
属性 | 说明 |
---|---|
.parent | 节点的父亲标签 |
.parents | 节点先辈标签的迭代类型,用于循环遍历先辈节点 |
平行遍历发生在同一个父节点下的各节点间。
下一个获取的可能是字符串类型,不一定是下一个节点。
属性 | 说明 |
---|---|
.next_sibling | 返回按照HTML文本顺序的下一个平行节点标签 |
.pre【【微信】】 | 返回按照HTML文本顺序的上一个平行节点标签 |
.next_siblings | 迭代类型,返回按照HTML文本顺序的后续所有平行节点标签 |
.pre【【微信】】 | 迭代类型,返回按照HTML文本顺序的前续所有平行节点标签 |
标记后的信息可形成信息组织结构,增加了信息的维度;
标记后的信息可用于通信、存储和展示;
标记的结构和信息一样具有重要价值;
标记后的信息有利于程序的理解和运用。
最早的通用信息标记语言,可扩展性好,但繁琐。
用于Internet上的信息交互和传递。
信息有类型,适合程序处理(js),较XML简洁。
用于移动应用云端和节点的信息通信,无注释。
信息无类型,文本信息比例最高,可读性好。
用于各类系统的配置文件,有注释易读。
XML JSON YAML
需要标记解析器,例如bs4库的标签树遍历。
优点:信息解析准确
缺点:提取过程繁琐,过程慢
搜索
对信息的文本查找函数即可。
优点:提取过程简洁,速度较快
缺点:提取过程准确性与信息内容相关
XML JSON YAML 搜索
需要标记解析器及文本查找函数。
思路: 1. 搜索到所有标签
? 2.解析标签格式,提取href后的链接内容
方法 | 说明 |
---|---|
<>.find_all(name,attrs,recursive,string,**kwargs) | 返回一个列表类型,存储查找的结果 |
简写形式:(..) 等价于 .find_all(..)
拓展方法:参数同.find_all()
方法 | 说明 |
---|---|
<>.find() | 搜索且只返回一个结果,字符串类型 |
<>.find_parents() | 在先辈节点中搜索,返回列表类型 |
<>.find_parent() | 在先辈节点中返回一个结果,字符串类型 |
<>.find_next_siblings() | 在后续平行节点中搜索,返回列表类型 |
<>.find_next_sibling() | 在后续平行节点中返回一个结果,字符串类型 |
<>.find_pre【【微信】】() | 在前续平行节点中搜索,返回列表类型 |
<>.find_pre【【微信】】() | 在前续平行节点中返回一个结果,字符串类型 |
功能描述:
? 输入:大学排名URL链接
? 输出:大学排名信息的屏幕输出(排名,大学名称,总分)
? 技术路线:re【【微信】】4
? 定向爬虫:仅对输入URL进行爬取,不拓展爬取
程序的结构设计:
? 步骤1:从网络上获取大学排名网页内容
? getHTMLText()
? 步骤2:提取网页内容中信息到合适的数据结构
? fillUnivList()
? 步骤3:利用数据结构展示并输出结果
? printUnivList()
当输出中文的宽度不够时,系统会采用西文字符填充,导致对齐出现问题。
可以使用中文空格chr(12288)填充解决。
:用于填充的单个字符
:右对齐 ^居中对齐
:槽的设定输出宽度
:数字的千位分隔符适用于整数和浮点数
:浮点数小数部分的精度或字符串的最大输出长度
:整数类型b,c,d,o,x,X浮点数类型e,E,f,%
正则表达式
- 通用的字符串表达框架
- 简介表达一组字符串的表达式
- 针对字符串表达“简洁”和“特征”思想的工具
- 判断某字符串的特征归属
操作符 | 说明 | 实例 |
---|---|---|
. | 表示任何单个字符 | |
[ ] | 字符集,对单个字符给出取值范围 | [abc]表达式a、b、c,[a-z]表示a到z单个字符 |
[^ ] | 非字符集,对单个字符给出排除范围 | [^abc]表示非a或b或c的单个字符 |
* | 前一个字符0次或无限次扩展 | abc* 表示 ab、abc、abcc、abccc等 |
+ | 前一个字符1次或无限次扩展 | abc+ 表示 abc、abcc、abccc等 |
? | 前一个字符0次或1次扩展 | abc?表示 ab、abc |
| | 左右表达式任意一个 | abc|def 表示 abc 、def |
{m} | 扩展前一个字符m次 | ab{2}c表示abbc |
{m,n} | 扩展前一个字符m至n次(含n) | ab{1,2}c表示abc、abbc |
^ | 匹配字符串开头 | ^abc表示abc且在一个字符串的开头 |
$ | 匹配字符串结尾 | abc$表示abc且在一个字符串的结尾 |
( ) | 分组标记,内部只能使用|操作符 | (abc)表示abc,{abc|def}表示abc、def |
\d | 数字,等价于[0-9] | |
\w | 单词字符,等价于[A-Za-z0-9_] |
正则表达式 | 说明 |
---|---|
由26个字母组成的字符串 | |
由26个字母和数字组成的字符串 | |
整数形式的字符串 | |
正整数形式的字符串 | |
中国境内邮政编码,6位 | |
匹配中文字符 | |
国内电话号码 |
Re库是Python的标准库,主要用于字符串匹配。
raw string类型(原生字符串类型),是不包含转义符的字符串
re库采用raw string类型表示正则表达式,表示为:r'text'
例如:
?
函数 | 说明 |
---|---|
re.search() | 在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象 |
re.match() | 从一个字符串的开始位置起匹配正则表达式,返回match对象 |
re.findall() | 搜索字符串,以列表类型返回全部能匹配的子串 |
re.split() | 将一个字符串按照正则表达式匹配结果进行分割,返回列表类型 |
re.finditer() | 搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象 |
re.sub() | 在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串 |
re.search(pattern,string,flags=0)
re.search(pattern,string,flags=0)
在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象;
pattern:正则表达式的字符串或原生字符串表示;
string:待匹配字符串;
flags:正则表达式使用时的控制标记;
常用标记 说明 re.I|re.IGNORECASE 忽略正则表达式的大小写,[A-Z]能匹配小写字符 re.M|re.MUTILINE 正则表达式中的^操作符能够将给定字符串的每行当做匹配开始 re.S|re.DOTILL 正则表达式中的.操作符能够匹配所有字符,默认匹配除换行符外的所有字符
例子:
re.match(pattern,string,flags=0)
re.match(pattern,string,flags=0)
- 从一个字符串的开始位置起匹配正则表达式,返回match对象
- pattern:正则表达式的字符串或原生字符串表示;
- string:待匹配字符串;
- flags:正则表达式使用时的控制标记;
例子:
re.findall(pattern,string,flags=0)
re.findall(pattern,string,flags=0)
- 搜索字符串,以列表类型返回全部能匹配的子串
- pattern:正则表达式的字符串或原生字符串表示;
- string:待匹配字符串;
- flags:正则表达式使用时的控制标记;
例子:
re.split(pattern,string,maxsplit=0,flags=0)
re.split(pattern,string,flags=0)
- 将一个字符串按照正则表达式匹配结果进行分割,返回列表类型
- pattern:正则表达式的字符串或原生字符串表示;
- string:待匹配字符串;
- maxsplit:最大分割数,剩余部分作为最后一个元素输出;
- flags:正则表达式使用时的控制标记;
例子:
..淘宝猫互助一天可以点几次赞,淘宝猫互助一天可以点几次赞,淘宝助力有记录吗,快进来,最新618天猫狂欢盛典2023最新微信互助群名称是什么,2023 618淘宝购物狂欢节淘宝猫互助一天可以点几次赞,2023年 618天猫狂欢盛典淘宝助力有记录吗,上万人一起互助版权声明:除非特别标注原创,其它均来自互联网,转载时请以链接形式注明文章出处。