Python爬虫:基础操作01(urllib工具 / requests工具 / 网页数据传输)

本文介绍了Python爬虫的基本操作,包括使用urllib和requests库进行网页访问、处理get和post请求、反爬机制、数据传输以及文件操作。通过实例展示了如何使用这两个库进行网页数据抓取和模拟浏览器行为。
摘要由CSDN通过智能技术生成

Python爬虫:基础操作01(urllib工具 / requests工具 / 网页数据传输)



写在前面

使用目的:模块化程序,用于新手快速上手
声明:请勿用于非法操作


程序片段及功能

1.urllib工具使用方法

1.网页访问:请求网页访问,得到网页数据信息

import urllib
from urllib import request

url = r"http://www.XXXX.com/"

# 网页访问方法1:直接访问,得到网页源码,解码---(编码encode())
reponse = request.urlopen(url).read().decode(encoding='utf-8')

# 网页访问方法2:构建HTTP处理器对象(专门处理HTTP请求的对象)
http_hander = request.HTTPHandler()
opener = request.build_opener(http_hander)	# 创建自定义opener
req = request.Request(url)					# 创建自定义请求对象
reponse = opener.open(req).read().decode()		# 发送请求,获取响应

# 网页访问方法2.1:把自定义opener设置为全局,这样用urlopen发送的请求也会使用自定义的opener;
http_hander = request.HTTPHandler()
opener = request.build_opener(http_hander)	# 创建自定义opener
req = request.Request(url)					# 创建自定义请求对象
request.install_opener(opener)
reponse = request.urlopen(req).read()

1.反爬机制:伪装浏览器,构造浏览器识别的信息绕过检测机制(只有初级功能,高级的或者验证码类型的就不得行了

import urllib
from urllib import request

url = r"http://www.XXXX.com/"

# 反爬机制1:判断用户是否是浏览器访问,可以通过伪装浏览器请求访问
req = request.Request(url)
reponse = request.urlopen(req).read().decode()

# 反爬机制2:构造请求头信息(可构建多个请求头,随机使用进行访问)
header = {"User-Agent": "Mozilla/4.0 compatible; MSIE 5.5; Windows NT 5.0"}
req = request.Request(url, headers=header)
reponse = request.urlopen(req).read().decode()  # 解码---(编码encode())

# 反爬机制3:判断请求来源的ip地址,可以使用代理IP
proxy = ["http": "182.111.64.7:41766"]
proxyHandler = request.ProxyHandler(proxy)		# 构建代理处理器对象
opener = request.build_opener(proxyHandler)		# 创建自定义opener
req = request.Request(url) 						# 创建请求对象
res = opener.open(req)

1.处理get请求:对需要提交信息才能反馈网页信息的网站进行访问,并取得其网页代码

import urllib
from urllib import request

url = r"http://www.XXXX.com/"

# 方法1
formdata = {"i": key}
data = urllib.parse.urlencode(formdata).encode(encoding='utf-8')
req = request.Request(url, data=data, headers=header)
resp = request.urlopen(req).read().decode()


# 方法2:
wd={"wd":"XX"}
#构造url编码
wdd=urllib.parse.urlencode(wd)
url=url+wdd
req=request.Request(url)
reponse=request.urlopen(req).read().decode()

2.requests工具使用方法

1.网页访问:请求网页访问,得到网页数据信息

import requests

url = r"http://www.XXXX.com/"

# 两种方法等效
response = requests.get(url).content.decode()
response = requests.request("get", url).content.decode()
print(response)

2.get网页访问:请求网页访问,得到网页数据信息

import requests

url = r"http://www.XXXX.com/"

headers = {"User-Agent": "Mozilla/4.0 compatible; MSIE 5.5; Windows NT 5.0"}
wd = {"wd": "XX"}
response = requests.get(url, params=wd, headers=headers)
data = response.text  # 返回一个字符串形式的数据
data2 = response.content  # 返回一个二进制形式的数据

3.post网页访问:请求网页访问,得到网页数据信息

import requests

url = r"http://www.XXXX.com/"

# 构造请求头信息
header = {"User-Agent": "Mozilla/4.0 compatible; MSIE 5.5; Windows NT 5.0"}
key = "XX"
# post请求需要提交的参数
formdata = {
				"i": key,
				"from": "AUTO",
				"to": "AUTO",
}
response = requests.post(url, headers=header, data=formdata)
  1. 关于三者的区别见链接

3. 网页数据传输

1.网页读取:将某网页的内容读取至文件夹中,并命名保存

from urllib.request import urlopen

url = r"http://www.XXXX.com/"
resp = urlopen(url)
with open("文件.html", mode="w", encoding="utf-8") as f:
    f.write(resp.read().decode("utf-8"))  # 读取到网页的页面源代码
print("over!")

2.网页请求:请求网页允许访问,并读取其网页信息

import requests

query = input("输入一个你喜欢的明星")
url = f'https://www.xxxxxx.com/web?query={query}'
dic = {"User-Agent": "你的浏览器信息"}
resp = requests.get(url, headers=dic)
print(resp.text)

3.网页单项交互:向网页发送信息,并取得单项回应

import requests

url = "https://xxxxxx.com/"
s = input("请输入你要翻译的英文单词")
dat = {"kw": s}
resp = requests.post(url, data=dat)	# 发送post请求, 发送的数据必须放在字典中, 通过data参数进行传递
print(resp.json())					# 将服务器返回的内容直接处理成json()  => dict

4.网页多项交互:向网页发送信息,并取得多项数据回应

import requests

url = "https://.xxxxxx.com/"
# 重新封装参数
limit_ = {
    "type": "24",
    "interval_id": "100:90",
    "action": "",
    "start": 1,
    "limit": 20,
}
param = limit_
headers = {"User-Agent": "你的浏览器信息"}
resp = requests.get(url=url, params=param, headers=headers)
print(resp.json())
resp.close()  # 关掉resp

代码附件

  1. Python爬虫:基础操作01-1:构造多条请求头函数,随机请求网页信息
  2. Python爬虫:基础操作01-2:多网页信息下载保存
  3. Python爬虫:基础操作01-3:使用session实现登陆账号,获取网页信息
  4. Python爬虫:基础操作01-4:得到网页多个音频资源,并下载保存
  5. Python爬虫:基础操作01-5:得到网页资源

参考网站名称

Python爬虫——Requests 的Get和Post请求
2021年最新Python爬虫教程


  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值