爬虫的基本规则学习

本文介绍了如何安装Python和PyCharm,详细讲解了Requests库的安装、get()方法及其在爬虫中的应用,包括HTTP协议操作、主要方法解析、Robots协议理解,以及常见异常处理。适合新手学习网络爬虫技术。
摘要由CSDN通过智能技术生成

目录

 

前期准备:

基本概念了解:

python和pycharm安装攻略:

学!(我爱北理mooc)

Requests库入门

Requests库安装

Request库的get()方法

爬取网页的通用代码框架

Requests库主要方法解析

Robots协议


 

前期准备:

基本概念了解:

什么是API?(看完你就理解了)_lph-China的博客-CSDN博客_api是什么

Python新手入门第一步:什么是 IDE?IDE 有什么用?_工程师大胖的博客-CSDN博客_ide

python和pycharm安装攻略:

本人一个晚上的血泪史,被大佬文章瞬间解决

Python安装教程(新手)_Hi梅的博客-CSDN博客_python安装教程

学!(我爱北理mooc)

Requests库入门

Requests库安装

win+R:进去后输入    pip install requests

然后用下面这段代码试验一下

import requests
r=requests.get("http://www.baidu.com")
r.status_code
#该请求的状态码。200表示连接成功
r.encoding='utf-8'
#改一下响应内容的编码方式
r.text
requests库的7个主要方法
方法说明
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库的get()方法

r=requests.get(url)

Respons对象的属性
属性说明
r.status_codeHTTP请求的返回状态,返回值为200即请求正常,404或其它表示失败
r.textHTTP响应内容的字符串形式,即:url对应的页面内容
r.encoding从HTTP header中猜测的响应内容编码方式
r.apparent_encoding从内容中分析出的响应内容编码方式(备选编码方式)
r.contentHTTP响应内容的二进制形式

 观察下面这段代码输出的不同

import requests
r=requests.get("http://www.baidu.com")
print(r.status_code)
r.encoding
r.text
r.apparent_encoding
r.encoding=r.apparent_encoding
r.text

由概念可知

r.encoding表示猜测,而r.apprent_encoding由内容中分析出的,所以第二个r.text 出现了我们可以读懂的中文字符

r.encoding:如果header中不存在charset,则认为编码为ISO-8859-1

r.apparent_encoding:根据网页内容分析出的编码方式,可以看作r.encoding的备选

                                    encoding解码失败了,就要用这个

ps:r.text根据r.encoding显示网页内容,所以当选择使用apparent的时候记得赋值

爬取网页的通用代码框架

Requests库的异常
异常说明
requests.ConnectionError网络连接错误异常,如DNS查询失败、拒绝连接等
requests.HTTPErrorHTTP错误异常
requests.URLRequriedURL缺失严重
requests.TooManyRedirects超过最大重定向次数,产生重定向异常
requests.ConnectTimeout连接远程服务器超时异常
requests.Timeout请求URL超时,产生超时异常

requests.Timeout超时异常是全程的,而requests.ConnectTimeout仅指连接远程服务器

补充一条:

r=requests.get(url)

r.raise_for_status()在方法内部判断r.status_code是否等于200,便于使用try-except进行异常处理 

来份通用框架

import requests
def getHTMLText(url):
    try:
        r=requests.get(url,timeout=30)
        r.raise_for_status()#如果状态不是200,引发HTTPError异常
        r.encoding=r.apparent_encoding
        return r.text
    except:
        return "产生异常"
if  __name__=="__main__":
    url=""#在引号中填写你想要爬取的网站的网址
    print(getHTMLText(url))

HTTP协议及Requests库方法

url格式:  http://host[:port][path]

host:域名或IP地址(必写)

port:端口号,http 默认端口为 80 ,可以省略。

path:路径,例如/view/index。

HTTP协议对资源的操作
方法说明
GET请求获取URL位置的资源
HEAD请求获取URL位置资源的响应消息报告,即获取该资源的头部消息
POST请求向URL位置的资源后附加新的数据
PUT请求向URL位置存储一个资源,覆盖原URL位置的资源
PATCH请求局部更新URL位置的资源,即改变该处资源的部分内容
DELETE请求删除URL位置存储的资源
HTTP协议与Requests库
HTTP协议Requests库功能一致性
GETrequests.get()一致
HEADrequests.head()一致
POSTrequests.post()一致
PUTrequests.put()一致
PATCHrequests.patch()一致
DELETErequests.delete()一致

Requests库主要方法解析

requests.request(method,url,**kwargs) 
mothod:请求方式:(7种)
r = requests.request(‘GET’,url,**kwargs)
r = requests.request(‘HEAD’,url,**kwargs)
r = requests.request(‘POST’,url,**kwargs)
r = requests.request(‘PUT’,url,**kwargs)
r = requests.request(‘PATCH’,url,**kwargs)
r = requests.request(‘DELETE’,url,**kwargs)
r = requests.request(‘OPTIONS’,url,**kwargs) 向服务器获取一些参数,一般不用


url:获取网页的url连接


kwargs:控制访问参数,共13个

params:字典或字节序列,作为参数添加到URL中

data:字典、字节序列或文件对象。作为Requests的内容

json:json格式的数据,作为Request的内容

3分钟让你明白JSON是什么_FanBro的博客-CSDN博客_json

headers:字典,HTTP定制头

cookies:字典或CookieJar,或者request中的cookie

auth:元组,支持HTTP认证功能

files:字典类型,向服务器传输文件

timeout:设置超时时间,以秒为单位

proxies:字典类型,设定访问代理服务器,可以增加登录认证,防止爬虫逆追踪

allow_redirects:重定向开关,默认为True

stream:获取内容立即下载开关,默认为True

verify:认证SSL证书字段,默认为True

cert:本地SSL证书路径

Robots协议

Robots Exclusion Standard 网络爬虫排除标准

这玩意在哪看呢?    网站根目录下的 robots.txt 文件

 http://www.().com/robots.txt

比如http://www.baidu.com/robots.txt

其中*代表所有,/代表根目录

User-agent: *

Disallow: /

这个就说明啥都不让你访问

https://www.moe.edu.cn/robots.txt

这个,咱国家教育部网站,就没有robots协议,说明可以乱爬

如果每天访问次数非常少,对服务器不造成资源巨大影响,从某种意义上算是类人行为,可以不遵守Robots协议

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ItsNorth

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值