网络爬虫,可以认为是
①模拟浏览器自动浏览网页(99%都是)
②一段程序,一个脚本
③自动批量采集我们需要的各种资源(图片、文字)
爬虫的步骤:
①根据目标数据查看网站
②分析数据加载流程(分析数据url)
③数据的下载、清洗数据
④数据持久化
下面介绍一下requests库
主要方法
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
get函数
r=resquests.get(url) : 得到url的回应
print( r ) :>> 200
type( r ) : >> <class’requests.models.Response’>
r.status_code : http请求的返回状态,200是成功,404是失败
r.text :http响应内容中的字符串形式,即url对应的页面内容
r.encoding : 从http header中猜测的响应内容编码方式
r.apparent_encoding : 从内容分析出的内容编码方式(备选编码方式,比前者更准确)
r.content : http响应内容的二进制形式
Requests库的异常
requests.ConnectionError : 网络连接错误异常,如DNS查询失败、拒绝连接
requests.HTTPError : HTTP错误异常
requests.URLRequired : URL缺失异常
requests.TooManyRedirects : 超过最大重定向次数,产生重定向异常
requests.ConnectTime out : 连接远程服务器超时异常
requests.Timeout : 请求URL超时,产生超时异常
爬取网页的通用代码框架:
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="https://www.bilibili.com"
print(getHTMLText(url))
#网络连接有风险,异常处理很重要