作者zerof (猫橘毛发呆雕像)
看板Python
标题Re: [问题] requests aspx 爬虫
时间Mon May 22 18:28:01 2017
前文 43
:
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 49.214.82.45
: ※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1495432336.A.7BF.html
: → coeric: 加过sess 好像也没用? 05/22 14:03
: ※ 编辑: coeric (49.214.82.45), 05/22/2017 14:10:00
: → leo850611: get那次要和post使用同个session 05/22 14:14
: http://codepad.org/WLXoNk55
: 似乎还是不行.........
: ※ 编辑: coeric (49.214.82.45), 05/22/2017 14:19:18
: → zerof: 要照顺序 post 05/22 15:21
: → zerof: 应该说要照 "手动选" 的顺序 post, 後端会检查 viewstate 05/22 15:22
: → coeric: 挖塞.....感谢楼上上了一课...还有这样的.... 05/22 16:11
: → coeric: 中间还有藏了一post..... 05/22 16:12
: 推 HenryLiKing: 不好意思我还是不太懂什麽叫做手动选的顺序耶 05/22 17:08
本来想说解释一下 viewstate 但这里是 Python 板... 有兴趣的话再自行研究吧QQ
简单来说 post 到 server 的 __VIEWSTATE 的值会在每次 post 的时候被检查,
检查的方式跟内容依各 ASP.NET 网站的实作有所不同。
so, 「手动选的顺序」指的是你实际上每一次动 dropdown list 的时候都会连动
post 操作的值回 server ,造成 __VIEWSTATE 变动,而 server side 刚好有检
查你 post 到 server 的 state 是不是符合人工操作的状态这样。
(例如要先选第一个 list 才能选第二个 list)
不过 server 没有 catch 这个 exception 就是了,不然不应该喷 500 error..
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 192.19.253.250
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1495448884.A.8CA.html
1F:推 coeric: 推推推~~~ 05/22 20:13
2F:→ s860134: 其实现在很多 webgame 都是这样的原理 05/22 23:13
3F:→ s860134: 有的是带在 cookie ,有的是夹在 data,每次 post 都刷新 05/22 23:14
4F:→ s860134: 每次的 post 必须包含上一次的 respon 的 key 05/22 23:15
5F:推 HenryLiKing: 不过还是希望原po大大介绍一点viewstate啊~ 05/23 08:16
6F:→ HenryLiKing: <(_ _)> 05/23 08:16
http://blog.csdn.net/peak915/article/details/616868 大概就是这样(咦
简单来说 ASP.NET 有它自己的「控制项」,像 html 的
<input type="button"/>
在 ASP.NET 里面可以是:
<input type="button" runat="server"/> 或 <asp:Button runat="server" />
利用 ASP.NET 提供的「控制项」,开发人员实际上并不需要熟 html , page 在
render 的时候会直接转成 html tag + js (这也是为什麽 ASP.NET 的 DOM 都会
有一些奇奇怪怪的东西)
ASP.NET 提供的「控制项」让开发人员可以在 server-side 直接存取/识别它在
client-side 的状态,靠的就是 postback & viewstate 。
(这也是为什麽 ASP.NET 的网页很常出现动一个小东西就触发ajax post 的原因)
ASP.NET 在 server-side 有直接提供 <asp:DropDownList ...> ,就是这个网站
用的 <select> 。
(<asp:ddl> convert to <select> + postback in event.)
※ 编辑: zerof (192.19.253.250), 05/23/2017 11:07:32