隋唐演义

隋唐演义

python网络爬虫需要装库吗 python和网络爬虫选哪个好

双十一 0

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_codeHTTP请求的返回状态,200表示连接成功,404表示失败
r.textHTTP响应内容的字符串形式,即:url对应的页面内容
r.encoding从HTTP header中猜测的响应内容编码方式
r.apparent_encoding从内容中分析出的响应内容编码方式(备选编码方式)
r.contentHTTP响应内容的二进制形式

获取网络资源的概要信息

向服务器提交新增数据

  

同post,只不过会把原来的内容覆盖掉。

异常说明
requests.ConnectionError网络连接错误异常,如DNS查询失败、拒绝连接等
requests.HTTPErrorHTTP错误异常
requests.URLRequiredURL缺失异常
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天猫狂欢盛典淘宝助力有记录吗,上万人一起互助