做网站大型,深圳市设计网站公司,网站开发公司 网站空间,郴州网上报名小学系统登录前言#xff1a;这篇文章主要介绍JS逆向爬虫中最常用的request模块#xff0c;然后引出一系列的模块的概念#xff0c;当然Python中其他比较常用的还有很多模块#xff0c;正是这些模块也可以称之为库的东西构成了Python强大的生态#xff0c;使其几乎可以实现任何功能。下…前言这篇文章主要介绍JS逆向爬虫中最常用的request模块然后引出一系列的模块的概念当然Python中其他比较常用的还有很多模块正是这些模块也可以称之为库的东西构成了Python强大的生态使其几乎可以实现任何功能。下面就详细介绍一下这些内容。 1requests模块 requests 作为一个专门为「人类」编写的 HTTP 请求库其易用性很强因此在推出之后就迅速成为 Python 中首选的 HTTP 请求库。requests 库的最大特点是提供了简单易用的 AP!让编程人员可以轻松地提高效率。由于 requests 不是 Python 的标准 库因此在使用之前需要进行安装: pip install requests python诵过 reauests 可以完成各种类型的 HTTP 请求包括 HTTP、HTTPS、HTTP1.0、HTTP1.1 及各种请求方法 requests支持的方法 requests模块支持的请求: import requests
requests.get(http://httpbin.org/get)
requests.post(http://httpbin.org/post)
requests.put(http://httpbin.org/put)requests.delete(http://httpbin.org/delete)requests.head(http://httpbin.org/get)
requests.options(http://httpbin.org/get) get--发送一个 GET 请求用于请求页面信息。 options--发送一个 OPTIONS 请求用于检查服务器端相关信息, head-一发送一个 HEAD 请求类似于 GET 请求但只请求页面的响应头信息。 post--发送一个 POST 请求通过 body 向指定资源提交用户数据。 put--发送一个 PUT 请求向指定资源上传最新内容。 patch-一发送一个 PATCH 请求同 PUT 类似可以用于部分内容更新。 import requests
res requests.get(https://ww3.sinaimg.cn/mw690/7772612dgy1hsmrek7r0gj21z41z4k2h.jpg)
with open(风景.jpg,wb)as f:f.write(res.content) #直接对内容进行爬取res1 requests.get(https://video.pearvideo.com/mp4/short/20240917/cont-1796387-16037163-hd.mp4)
with open(视屏.mp4,wb)as f:f.write(res1.content) #直接对内容进行爬取 requests的响应信息 print(respone.statuscodeprint(respone.headers)
print(respone.text)
print(response.json)2.编码
print(respone.content)
print(response.encoding) UA反爬 请求头需要加上下面的标识 import requestsres1 requests.get(https://www.baidu.com,headers{user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36
})with open(baidu.html,w,encodingutf-8)as f:f.write(res1.text) refererf反爬与requests请求参数 import requestsres1 requests.get(https://m.douban.com/rexxar/api/v2/movie/recommend?,headers{user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36,Referer:https://movie.douban.com/explore
},params{tags: 喜剧,
})# print(res1.text)
print(res1.json())
# print(type(res1.json()))items res1.json()[recommend_categories]
for i in items:print(i.get(data))for j in i.get(data):print(j.get(text)) 请求体的数据 模拟有道翻译的小程序 import requestsindata input(请输入:)
res1 requests.post(https://aidemo.youdao.com/trans,headers{user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36,Referer:https://ai.youdao.com/
},params{},data{q:indata,from:Auto,to:Auto
})
print(res1.text)
print(res1.json().get(translation)) cookie反爬 cookie在用户登陆的时候生成一个当用户再次用浏览器请求相同的信息数据的时候就会自带一个cookie值cookie比对成功之后服务端会进行免登录而爬虫程序就会需要带cookie才可以爬取数据成功 #(1)模拟登录获取动态cookie
res1requests.post(http://127.0.0.1:5000/auth, data{yuanuser,pwd:123
}
#(2)响应cookie
print(dict(res1.cookies))#(3)再次登录发送cookie
res1 requests.get(http://127.0.0.1:5000/auth,headers{user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36},cookiedict(res1.cookies))
print(res1.text) session对象 #举例本地端口此程序无法实际运行
import requests
session requests.session()
session.post(http://127.0.0.1:5000/auth,data{user: yuan,pwd: 123,}
)
#(2)携带cookie爬取数据
res2 session.get(http://127.0.0.1:5000/books) 代理IP 代理IP:反反爬使用代理ip是非常必要的一种反反爬的方式但是即使使用了代理ip对方服务器任然会有很多的方式来检测我们是否是一个爬虫比如:一段时间内检测IP访问的频率访问太多频繁会屏蔽;检查CookieUser-AgentReferer等header参数若没有则屏蔽;服务方购买所有代理提供商加入到反爬虫数据库里若检测是代理则屏蔽等。所以更好的方式在使用代理ip的时候使用随机的方式进行选择使用不要每次都用一个代理ip 2模块与包 模块初识 def add(x,y):return x ydef subtract(x,y):return x - ydef multiply(x,y):return x * ydef divide(x,y):return x / y#
#调用其他文件中的接口的方式1
import cal
import mul
x 1
y 120
z cal.subtract(x,y)
q mul.multiply(x,y)
print(z)# 方式2
from cal import subtract
from mul import multiply,divide
from mul import * #mul文件内的接口都可以用
x 1
y 120
z subtract(x,y)
print(z) 模块与包的导入本质 本质上面在一个启动文件中导入一个python程序包需要在启动文件一般名字是main同级目录及其以下的文件夹目录下面的导入的包 如下程序所示 from cal.cal import subtract
from cal.mul import multiply,divide
from cal.mul import * #mul文件内的接口都可以用
x 1
y 120
z subtract(x,y)
print(z) 第三方包的导入与引用 1注意之际命名的python文件包的名字不可以与已有标准库或者下载的第三方的包一样 2通过from在启动文件中导入第三方包的时候程序就已经将第三方文件中的程序加载执行了一遍了 import sys
# py程序文件导入报的路径都是通过下面加载的文件路径导入的
print(sys.path:::, sys.path) 自定义的包文件的导入 import os
import sys
print(sys.path:::,sys.path)
path01 os.path.dirname(__file__)
path02 os.path.dirname(path01)
sys.path.insert(0,path02) 常见OS模块的接口 import os
# 创建文件夹
# (1)
# os.mkdir(我的模块)
# 路径拼接
path os.path.join(我的模块,my.txt)
print(path)
with open(path, w, encodingutf-8) as f:data f.write(icwdgcbiwdbci)#(4)是否存在某文件或目录
print(os.path.exists(我的模块2))#(5) 检查某一文件中的文件名与其路径名
path1 (/Users/yuan/PycharmProjects/my.txt)
print(os.path.basename(path1))
print(os.path.dirname(path1))
print(os.path.split(path1))