当前位置: 首页 > 工具软件 > Strawberry > 使用案例 >

Strawberry-Python_爬虫

束帅
2023-12-01

提示:版权归Strawberry所有(大数据2202Byj)
未经授权,禁止搬用。

1.爬虫基础

1.1HTTP基本原理

2.基本库的使用

2.1ubllib的使用

1.介绍:首先介绍一个Python库,叫做ubllib,利用他可以实现HTTP请求的发送,而且不需要关心HHTP协议本身甚至更底层的实现,我们要做的是指定请求的URL、请求体等信息。此外urllib还可以把服务器返回的响应转换为Python对象,我们通过该对象便可以方便地获取响应的相关信息,如响应状态码、响应头、响应体等。
2.urllib库的4个模块
1.request:这是最基本的HTTP请求模块,可以模拟请求的发送。
2.error:异常处理模块。如果出现请求异常,那么我们可以捕获这些异常,然后进行重试或其他操作以保证程序进行不会意外终止。
3.parse:一个工具模块。提供了许多URL的处理方法,例如拆分、解析、合并等
4.robotparser:主要用来识别网站的robots.txt文件,然后判断哪些网站可以爬,哪些网站不可以,它其实用得比较少

一.发送请求(使用urllib库的request模块)

2.1-1.urlopen

案例一:
体验用urllib将python官网抓取下来

import urllib.request
response = urllib.request.urlopen('https://www.python.org')
print(response.read().decode('utf-8'))

(这里可以输出网站的源代码)

接下来 我们看看响应到底是什么。利用type方法输出响应类型

import urllib.request
response = urllib.request.urlopen('https://www.python.org')
print(type(response))

响应的是一个HTTPResposne类型的对象
案例二:

import urllib.request
response = urllib.request.urlopen('https://www.python.org')
print(response.status)
print(response.getheaders())
print(response.getheader('Server'))

解析:
1.第一个print输出的是响应状态码
2.第二个print输出的是响应的头信息
3.第三个print输出是调用getheader方法,并传入参数Server,获取了响应头中的Server值,结果是Nginx,意思是服务器是用Nginx搭建的

2.1-2data参数

data参数是可选的,在添加该参数时,需要使用bytes方法将参数转化为字节流编码格式的内容。即bytes类型。另外,如果传递了这个参数,那么它的请求方式就不再是GET,而是POST了。

案例1

import urllib.parse
import urllib.request
data = bytes(urllib.parse.urlencode({'name':'germey'}),encoding='utf-8')
response = urllib.request.urlopen('https://www.httpbin.org/post', data=data)
print(response.read().decode('utf-8'))

解析:这里我们传递了一个name,值是germey,需要将他转为bytes类型。转码时采用了bytes方法,该方法的第一个参数得是str(字符串)类型,因此用urllib.parse模块里的urlencode方法将字典参数转化为字符串;第二个参数用于指定编码格式,这里指定为utf-8。

 类似资料: