【爬虫】1初学Python网络爬虫

1、背景

内容主要参考北京理工大学嵩天老师的《Python网络爬虫与信息提取》课程,不想看视频,自学能力强的就直接看PPT了
在这里插入图片描述
课程实例如下:
课程实例
python开发工具选择为:pycharm+Anaconda

2、爬虫规则

Request库——自动爬取HTML页面、自动网络请求提交

(1)安装Request库

安装略过,测试代码如下:

// 爬虫代码示例1
import requests
r = requests.get("http://www.baidu.com")
print(r.status_code)
print(r.text)

结果如下:

在这里插入图片描述
现在还暂时看不懂这些代码及结果,先不管。

Requests库的7个主要方法如下所示:
在这里插入图片描述

(2)Requests库的get()

在这里插入图片描述
其中,Response对象包含爬虫返回的内容,具体参数如下:
在这里插入图片描述

// 爬虫代码示例2
import requests
r = requests.get("http://www.baidu.com")
print(r.status_code)
# print(r.text)
print(type(r))
print(r.headers)

结果如下所示:

200
<class 'requests.models.Response'>
{'Cache-Control': 'private, no-cache, no-store, proxy-revalidate, no-transform', 'Connection': 'keep-alive', 'Content-Encoding': 'gzip', 'Content-Type': 'text/html', 'Date': 'Sat, 16 Jan 2021 11:34:03 GMT', 'Last-Modified': 'Mon, 23 Jan 2017 13:27:29 GMT', 'Pragma': 'no-cache', 'Server': 'bfe/1.0.8.18', 'Set-Cookie': 'BDORZ=27315; max-age=86400; domain=.baidu.com; path=/', 'Transfer-Encoding': 'chunked'}

所以Response对象包含服务器返回的所有信息,也包含请求的Request信息。

a. Response对象的属性

在这里插入图片描述
简单来说,首先用r.status_code看一看返回的是不是200,是的话才能用r.text、r.encoding、r.apparent_encoding、r.content,否则返回的是404的话,可能是某些原因出错产生异常。
一个demo如下:
在这里插入图片描述
下面理解一下Response的编码
r.encoding——如果header中不存在charset,则认为编码为ISO-8859-1
r.text根据r.encoding显示网页内容r.apparent_encoding——根据网页内容分析出的编码方式可以看作是r.encoding的备选

b. 爬取网页的通用代码框架

首先需要理解Requests库的异常,因为网络连接是有风险的:
在这里插入图片描述
r.raise_for_status()在方法内部判断r.status_code是否等于200,不需要增加额外的if语句,该语句便于利用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 = "http://www.baidu.com"
    print(getHTMLText(url))

注意! url = "www.baidu.com"会报错

(3)HTTP协议及Requests库方法

HTTP协议:Hypertext Transfer Protocol,超文本传输协议,是一个基于“请求与响应”模式的、无状态的应用层协议,协议采用URL作为定位网络资源的标识,URL格式如下:
在这里插入图片描述
其中:

参数名Value
host合法的Internet主机域名或IP地址
port端口号,缺省端口为80
path请求资源的路径

URL实例例如:

  • http://www.bit.edu.cn
  • http://220.181.111.188/duty

简单来说,URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源
在这里插入图片描述
下面介绍HTTP协议对资源的操作:
在这里插入图片描述
通过URL和命令管理资源,操作独立无状态,网络通道及服务器成为了黑盒子
在这里插入图片描述
HTTP协议与Requests库功能是一致的,可以认为六种方法是等价的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

(4)Requests库主要方法解析

requests.request(method,url,**kwargs)

method : 请求方式,对应get/put/post等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 : 字典、字节序列或文件对象,作为Request的内容
    在这里插入图片描述
  • json: JSON格式的数据,作为Request的内容
    在这里插入图片描述
  • headers : 字典,HTTP定制头
    在这里插入图片描述
  • cookies : 字典或CookieJar,Request中的cookie
  • auth: 元组,支持HTTP认证功能
  • files : 字典类型,传输文件
    在这里插入图片描述
  • timeout : 设定超时时间,秒为单位
    在这里插入图片描述
  • proxies : 字典类型,设定访问代理服务器,可以增加登录认证
    在这里插入图片描述
  • allow_redirects: True/False,默认为True,重定向开关
  • stream : True/False,默认为True,获取内容立即下载开关
  • verify : True/False,默认为True,认证SSL证书开关
  • cert: 本地SSL证书路径

不用记住。总而言之,**kwargs: 控制访问的参数,均为可选项 。

之前的get函数:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

内容参考来源: Python网络爬虫与信息提取.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值