我是张晨,一转眼,我在新课已经学习了很长一段时间。回顾这几个月的时间,我收获了很多知识。这里是我的一点学习笔记。
一、urllib了解与使用
urllib是一个功能强大、条例清晰、用于HTTP客户端的Python库。它提供了许多Python标准库里所没有的特性:压缩编码、连接池、线程安全、SSL/TLS验证、HTTP和SCOCKS代理等。
# 更新pip
python -m pip install --upgrade pip
# 下载urllib模块
pip install urllib3
# 更新模块
pip install -U urllib3
# 使用清华源进行下载
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple urllib3
pip install urllib3 -i https://pypi.tuna.tsinghua.edu.cn/simple
1.使用**urlopen( )**方法爬取网页源代码,url参数用于指定要请求的URL路径(未指定data参数时,默认使用GET请求方法)
示例:
import urllib.request # 导入urllib的请求模块
# 使用urlopen方法请求网址 默认使用get请求
response = urllib.request.urlopen("https://www.python.org")
# 读取请求的数据 字节数据
print(response.read())
运行结果:
2.urllib 编码
示例代码:
# https://www.baidu.com/s?wd=%E6%95%B0%E6%8D%AE
# parse.urlencode(字典数据) # 将数据进行编码
# parse.unquote() # 将数据进行解密
from urllib import parse
# 编码 将“wd=数据”转换为键值对
data = {'wd': '数据'}
print(parse.urlencode(data))
# 解密
print(parse.unquote('%E6%95%B0%E6%8D%AE'))
print(parse.unquote('https://www.baidu.com/s?wd=%E6%95%B0%E6%8D%AE'))
运行结果:
urllib百度贴吧完整案例:
from urllib import request, parse
# 请求网址
url = 'https://tieba.baidu.com/f'
# 请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0',
}
# 携带参数
param = {
'kw':'%E7%8E%8B%E8%80%85%E8%8D%A3%E8%80%80'
}
data = bytes(parse.urlencode(param), encoding='utf-8') # 对携带的参数进行编码
req = request.Request(url=url, data=data, headers=headers, method='GET') # 发起请求
response = request.urlopen(req)
print(response.read().decode('utf-8'))
运行结果:
二、requests简介
requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到,Requests是Python语言的第三方的库,专门用于发送HTTP请求
# pip install requests 在命令窗口或者终端安装请求模块
# Requests响应
r.status_code # 响应状态码
r.heards # 响应头
r.cookies # 响应cookies
r.text # 响应文本
r.json() # 转换为json数据
r.encoding # 当前编码
r.content # 以字节形式(二进制)返回
requests使用
示例:
import requests
url = 'https://tieba.baidu.com/f'
html = requests.get(url) # get 请求方式
print(html.status_code)
运行结果:
三、get请求
示例:
import requests
url = 'https://tieba.baidu.com/f'
html = requests.get(url) # get 请求方式
html.encoding = 'utf-8' # 解决数据乱码
print(html.text)
html.close()
运行结果:
四、携带headers的请求
示例:
import requests
url = 'https://tieba.baidu.com/f'
head_data = {
# 字典,需要有一个键值对
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'
}
html = requests.get(url,headers=head_data)
html.encoding = 'utf-8' # 解决数据乱码
print(html.text)
html.close()
运行结果:
五、携带参数的请求
示例:
import requests
url = 'https://tieba.baidu.com/f'
head_data = {
# 字典,需要有一个键值对
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'
}
data = {
'kw':'%E7%8E%8B%E8%80%85%E8%8D%A3%E8%80%80'
}
html = requests.get(url,params=data,headers=head_data)
html.encoding = 'utf-8' # 解决数据乱码
print(html.text)
html.close()
运行结果:
六、携带代理IP
代理获取网站:https://www.hailiangip.com/tool/page/getip
import requests
url = 'http://httpbin.org/ip'
head_data = {
# 字典,需要有一个键值对
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'
}
proxies = {
'http': 'ip:port',
}
html = requests.get(url, proxies=proxies, headers=head_data)
print(html.text)
七、百度数据实战
示例:
import requests
url = 'https://www.baidu.com/s?wd=%E5%A3%81%E7%BA%B8'
head_data = {
# 字典,需要有一个键值对
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'
}
html = requests.get(url, headers=head_data)
print(html.text)
f = open('百度数据.txt', 'w+', encoding='utf-8') # 把数据保存到文件中
f.write(html.text)
f.close()
html.close()
运行结果:
暂时先分享这么多吧,希望大家在学习过程当中都能有所收获,感谢新课,如果想获取更多资料或者联系加群,可以关注我们新课的微信公众号,后台自动回复获取代码笔记资料。