爬虫知识总结,对爬虫的看法
中国最高学府排行榜 importrequestsfroms 4 import beautiful Soupdefget _ html _ text(URL):try 3360 HD={ auth-agege r . encoding=r . obvious _ encoding;R. text除:print(连接错误))return) def fill _ univ _ list)r):soup=beautiful soup(r, html。PAA age ls=[]for iinrange(10):ls _ TD . append)ls _ tr[I]。find _ all)TD’)for iteminls _ TD 33330 def print _ univ _ list(ls):tplt={0:^10}(t)1:{3}^10})t)2:^10);Print(tplt.format)、“排名”、“学校名称”、“分数”、CHR(12288))for iinrange)10):)tplt . format)[ls[I print _ univ _ list(ls;URL= 2016.html,http://www.zuihaodaxue.com/zuihaodaxuepaiming主要(URL)抓取和网页分析定向网页数据
请求库:自动访问HTML页面并自动提交web请求。
Robots.txt:网络爬虫排除标准
美汤:解析html界面
Re:正则表达式库,提取页面的重要信息。
Scrapy*:网络爬虫原理及专业爬虫框架介绍。
使用请求库
Requests.request(#)创建一个请求以支持以下方法的基本方法
获取页面的主要方法对应于HTTP的get。
Requests.head(获取# html页面头信息的方法对应HTTP
Requests.post(#)将post请求发送到http post对应的HTML页面。
Requests.put(#向对应于http put的HTML页面提交put请求
Requests.patch(#)向HTML页面提交对应于HTTP路径的本地修改请求。
Requests.delete(#)向HTML页面提交HTTP删除对应的删除请求。
requests.request(方法,url,**kwargs)).
方法:请求模式GET,HEAD,POST,PUT,PATCH,delete,OPTIONS。
**kwargs:控制访问的参数作为参数附加到url。
Params:作为字典或字节列或参数添加到url。
importrequestskv={ key 1 : value 1 , key 2 : value 2 } r=requests . request( get , http://python118
importrequestskv={ key 1 : value 1 , key 2 : value 2 } r=requests . request( post , http://python
标题:字典,http自定义标题#可以模拟任何浏览器
importrequestshd={ user-agent : chrome/10 } r=requests . request( post , http://python123.io/ws )
Auth: tuple类型,支持HTTP认证。
文件:字典类型,传输文件
importrequestsfs={ file :open data . xls , Rb}r=requests.request , http://python123.iithon
地方
R=requests.request (get , http://Python123.io/ws,超时=30)proxy:字典类型,设置访问代理服务器,可以增加登录认证。
导入请求PXS={ http : http://user:pass @ 10 . 10 . 10 . 1:1234 , https : 335810 . 10 . 1:4321 } r=requests . request( get )
Stream: True/false,默认值为True,切换为立即下载内容。
Verify: True/False,默认值为True,SSL证书交换机已经过身份验证。
证书:本地SSL证书路径
R=requests.get(url)#构造一个向服务器请求资源的请求对象,返回一个包含服务器资源的响应对象,最重要的。返回爬虫需要的东西。
Requests.get (URL,params,* * kwargs) # URL:要获取的页面的链接;params:URL、字典或字节流样式的额外参数,可选。* * kwargs: 12个控制访问参数
导入请求
r=requests . get(" http://www . Baidu . com ")
Print(r.status_code)#返回状态代码。如果是200,就成功了;如果不是200,则失败
R.header #返回get请求接口的头信息,字典类型。
响应对象的属性:
R.status _ code # HTTP请求的返回状态,200表示连接成功,404表示失败。
R.text #对应内容字符串的http信息,即url对应的页面内容
R.encoding #从http头猜测的响应内容的编码方法
R.apparent_encoding # response与内容分离的内容编码方法(备选编码方法)
http响应内容的二进制形式
请求的异常处理
请求。ConnectionError #网络连接错误异常,如DNS查询失败、连接拒绝等。
请求。HTTPError #HTTP错误异常
缺少请求时出现异常。URL必需#URL
请求。TooManyRedirects #超过了最大重定向数,导致重定向异常。
请求。连接到远程服务时出现ConnectionTimeout #异常。
请求。超时#请求URL超时,导致超时异常
R.raise_for_status() #如果不是200,生成一个异常请求。HTTPErrorr
提交的数据代码导入请求有效负载={key1: value1 , key 2 : value 2 } r=requests . post( 3358 HTTP bin . org/post ,data=payload) print (r.text) HTTP协议:超文本传输协议,请求-响应,无状态
http://主机[:端口][路径]
主机:合法的互联网主机域名或IP地址
端口:端口号,默认端口号为80。
Path:所请求资源的路径。
方法:
GET:请求获取URL位置的资源。
HEAD:请求URL位置资源的响应消息报告,即头信息。
POST:请求在URL位置向资源追加新数据。
PUT:请求在URL位置存储资源,覆盖原始URL位置的资源。
PATCH:请求在本地更新URL位置的资源,即改变该位置资源的某些内容。
删除:请求删除存储在URL位置的资源
小规模,请求库抓取网页对抓取速度不敏感。
中型和爬行类网站使用Scrapy库,对爬行速度比较敏感。
大规模,爬全网,建立搜索引擎,定制开发,爬全网。
对网络爬虫的限制:源审查:判断用户代理施加的限制,并进行公告。
获取url内容
导入请求:HD={ user-agent : chrome/10 } URL= 3359 www . Baidu . com r=requests . get(URL,headers=HD)r . raise _ for _ status()print(r . text[:1000])
导入请求stry:IP= 112 . 38 . 203 . 59 HD={ user-agent : Chrome/10 } URL= https://www . IP 138 . com/iplookup . ASP kv={ IP :IP, action:2} r=requests.get(url,Ers=HD,params=kv)r . raise _ for _ status()r . encoding=r . apparent _ encoding print(r . URL n ,r.text [:1000]
从bs4导入请求导入美汤=requests . get(URL)demo=r . text soup=美汤(demo, html.parse )美汤库解析器
bs4的HTML解析器:BeautifulSoup(mk, html.parse ),前提是安装了bs4库。
lxml的HTML解析器:BeautifulSoup(mk, lxml ),假设pip安装lxml
lxml的xml解析器:BeautifulSoup(mk, XML),前提是pip安装lxml
html5lib的解析器:BeautifulSoup(mk, html5lib ),前提是pip安装html5lib
美声的基本元素
标签:标签/
名称:标签的名称。
……
,p是标签的名称。名字
属性:标签的属性,以字典形式组织,格式:属性列表
Navigablestring:标记内的非属性字符串。
注释:标签中字符串的注释部分,一种特殊类型的注释。
汤后可以点的东西. a: parent的上标签,name,string里面的string,attrs属性。
!注释部分
标签树的向下遍历。子节点列表的内容,所有子节点都存储在列表中。
的迭代类型。子节点,类似于。内容,用于遍历子节点。
的后代节点的迭代类型。后代,包括所有后代节点,用于循环遍历。
标签树的向上遍历
的父标签。亲代交点
的祖先标签的迭代类型。parents节点,用于循环访问祖先节点。
标签树的并行遍历。HTML文本顺序中的下一个并行节点标签。以HTML文本顺序排列的前一个并行节点标签。next_siblings迭代类型,以HTML文本顺序返回所有后续的并行节点标签。previous _siblings迭代类型,以HTML文本顺序返回所有以前的并行节点标签。
迭代类型智能在类型中为遍历。
print(soup . pretify())在每个标签后面加一个 n ,这样看起来更好看。它还可以处理单个标签的三种信息标识符:XML、JSON和YAML。
XML格式:
JSON的标识形式:键值对, key: value , key: [value1 , value2], key1: {key2: value}
YAML身份证明表:
关键:价值
关键字:#注释
-值1
-价值2
关键:
子项:子值
XML:互联网上的信息交换和传输
JSON:移动应用云和节点之间的信息交流,不带注释
YAML:各种系统的配置文件,带有易读的注释。
信息抽取的一般方法
方法:全面分析信息的标记形式,提取关键信息。
XML JSON YAML
需要标签解析器,比bs4的标签树遍历更准确,但速度较慢。
方法:忽略标记形式,直接搜索关键信息。
只是搜索信息的文本功能,提取速度快,但是准确性不好。
汤的作用
Soup.find _ all (a) #在Soup中查找所有A标签
Soup.find _ all ([a , b]) #查找Soup中的所有A,B标签
Soup.find_all(True)#返回Soup中的所有标签
Soup.find _ all (re.pile (b)) #显示所有以b开头的标签,re是正则表达式库。
Soup.find _ all (p , course) #显示所有带course的p标签
Soup.find_all(id=link1)#返回属性中id=link1 的标记元素
soup . find _ all(id=re . pile( link ))#返回id=以link开头的标签
soup . Find _ all(string= basic python )#查找basic python字符串
S soup.find _ all (string=re.pile(基础python)) #查找python出现的字符串。
Soup.a.get(href)#) #返回标签a中的所有href内容。find.all (name,attrs,recursive,string,* * kwargs),表示一个节点。
返回存储搜索结果的列表类型。
名称:标签名称的检索字符串。
Attrs:标签属性值的检索字符串,可以标记为属性检索。
递归:是否检索所有后代;默认值为True。
字符串:找到一个字符串。
(…)相当于。查找全部(…)
Soup(…)相当于soup.find_all(…)
展开法。find()#搜索并只返回一个结果,字符串类型与find_all()参数相同。findparents()#在祖先节点中搜索并返回列表。findparent()#返回父节点中的结果,字符串类型。find_nextsiblings()#在后续并行节点中搜索并返回列表。find_nextsibling()#在后续节点中搜索并返回一个结果,string。find_previous_siblings()#在前面的并行节点中搜索并返回列表。find_nextsibling()#在前面的节点中搜索并返回一个结果,即一个字符串