惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

I
InfoQ
博客园_首页
美团技术团队
M
MIT News - Artificial intelligence
人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
H
Help Net Security
J
Java Code Geeks
T
Tailwind CSS Blog
Jina AI
Jina AI
量子位
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
G
Google Developers Blog
爱范儿
爱范儿
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
宝玉的分享
宝玉的分享
小众软件
小众软件
MongoDB | Blog
MongoDB | Blog
博客园 - 三生石上(FineUI控件)
L
LangChain Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
V
Visual Studio Blog
博客园 - Franky
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

博客园 - 广交天下好友

给 IIS 配置 HTTPS maui发布安卓系统 MAUI 运行环境注意事项 MQTT项目应用 MQTT 网络方面小知识 电脑小知识 Redis操作篇 Modbus 软件安装注册码 wpf 关闭热重载 重装vs2022 nuget添加包报错: Unexpected character encountered while parsing value: �. Path '', line 0, position 0. WPF 踩过的坑 vs2019 未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项。试图加载格式不正确的程序。 sql 备忘录 Excel 其它操作 护眼颜色调整 第一篇 C#模拟http请求抓取数据 asp.net webService添加头文件验证 好文记录地址 关于邮件发送和邮件附件接收方面 sql 查询时间当前时间少7天 20190729研究和学习篇 C# Timer同步和异步使用 马肯9450命令回传 上海公积金社保业务办理
练习第一篇 Python Requests使用
广交天下好友 · 2020-03-11 · via 博客园 - 广交天下好友

前面用到的python库urllib

上篇讲的是urlib 抓网页的点击事件

这篇用的库是Requests抓取网页点击事件

import requests
import re

str = {
        '__VIEWSTATE': 'i8VVE3gtBLKgjBpYFwMCruW86sOjv2lTpmzZF3mD3L/QIkX0Ode3Xc9MaMXFQnjiAK80xxkQ9rjTyjGrBWvbLwcxug4r9Akhmcxs/plCdYM=',
        '__VIEWSTATEGENERATOR':'B6E7D48B',
        '__EVENTVALIDATION':'2X6ageL+LlYeiTSgyQPd/FPAhPtg350MNiiKvURoS4xMsysX+0HyGjGN93yx7K27/NubbDHt2oTpWbFCv1dampTLrZkWvsf32lHlqJUliAsudoGhZ3kwM/XCxXSlvhNr',
        'Button1':'Button'
}

url = "http://192.168.21.195:8044/WebForm1"

response = requests.post(url,data=str)

resstr=response.text

new_st = re.sub(r'<[^>]*>','',resstr)
print(new_st.split())

运行结果

自己抓自己发布的网页程序感觉没什么挑战的。

换点别的操作,模拟某网站人工登录。

1,先用浏览器抓个包

code:

import json
import requests

headers={
 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
}

str = {'trafree_username':'帐号','trafree_password':'密码','isRemember':False}

data = json.dumps(str)
data = bytes('json=' +data, 'utf-8')

# str = {'json': {'trafree_username':'帐号','trafree_password':'密码','isRemember':False}}
#
# data = json.dumps(str)
# data = bytes(data, 'utf-8')

url = "http://www.trafree.com/platform/agentuser/login"

# 写法1
# response = requests.post(url, data=data,headers=headers)
# 写法2
response = requests.request('POST', url=url ,data=data,headers=headers)

# response = requests.post(url, data=data)
# print(response)
print(response.text)
# print(response.content)

 运行结果:

为什么不带头文件不行

response = requests.post(url, data=data)

debug调试发现 request的请求头是

{'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '94'}
response = requests.post(url, data=data,headers=headers)

这段代码执行的 request的请求头是

{'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}

比对浏览器抓的包分析就知道怎么设置请求了。