Python爬虫实现HTTP网络请求多种实现方式

家电修理 2023-07-16 19:17www.caominkang.com电器维修

1、通过urllib.requests模块实现发送请求并读取网页内容的简单示例如下

#导入模块
import urllib.request
#打开需要爬取的网页
response = urllib.request.urlopen('http://.baidu.')
#读取网页代码
html = response.read()
#打印读取的内容
print(html)

结果

b'nnn n nxe7x99xbexe5xbaxa6xe4xb8x80xe4xb8x8bxefxbcx8cxe4xbdxa0xe5xb0xb1xe7x9fxa5xe9x81x93#form .bdsug{:39px}.bdsug{display:none;position:absolute;idth:535px;background:#fff;border:1px solid 
………………(太多省略)

以上示例中是通过get请求方式获取百度的网页内容。

下面是通过urllib.request模块的post请求实现获取网页信息的内容

#导入模块
import urllib.parse
import urllib.request
#将数据使用urlencode编码处理后,再使用encoding设置为utf-8编码
data = bytes(urllib.parse.urlencode({'ord':'hello'}),encoding='utf-8')
#打开指定需要爬取的网页
response = urllib.request.urlopen('http://httpbin./post',data=data)
html = response.read()
#打印读取的内容
print(html)

结果

b'{n "args": {}, n "data": "", n "files": {}, n "form": {n "ord": "hello"n }, n "headers": {n "Aept-Encoding": "identity", n "Content-Length": "10", n "Content-Type": "application/x--form-urlencoded", n "Host": "httpbin.", n "User-Agent": "Python-urllib/3.7", n "X-Amzn-Trace-Id": "Root=1-5ec3f607-00f717e823a5c268fe0e0be8"n }, n "json": null, n "origin": "123.139.39.71", n "url": "http://httpbin./post"n}n'

2、urllib3模块

通过urllib3模块实现发送网络请求的示例代码

#导入模块
import urllib3
#创建PoolManager对象,用于处理与线程池的连接以及线程安全的所有细节
http = urllib3.PoolManager()
#对需要爬取的网页发送请求
response = http.request('GET','https://.baidu./')
#打印读取的内容
print(response.data)

结果

b'rnrnrntrntrntrntrntrntrntrntrntrntrntxe7x99xbexe5xbaxa6xe4xb8x80xe4xb8x8bxefxbcx8cxe4xbdxa0xe5xb0xb1xe7x9fxa5xe9x81x93rntrntrntrnt