环境先说明一下。 我已经模拟了 cookies + headers 。(和浏览器一摸一样)
用浏览器打开的源代码是: (就是没有<head>和<body>,算是js调用的一个小框框)
<ul class=""
data-a="0.00"
data-b="222"
data-c="0">
<li class="xxx"> <a href="javascript:void(0);" class="removeX">删除</a> test
</button> </a> </li> </ul>
而我用 request 打开却只有
</button> </a> </li> </ul>
最后一点点。
我还用 urllib2 尝试,效果也一模一样
用 requests 或 urllib2 获取的时候 response headers 里面 content-length 和浏览器那是一样的。
获取到的内容长度一样,可惜得到的内容只有尾巴那一点点呀,,,
请大家帮忙支招,谢谢!
1
heaton_nobu 2016-05-20 08:56:24 +08:00
可能前面的内容是 ajax 获取后添加上去的
|
2
daiv OP @heaton_nobu 如果是 ajax 行为,我用 charles 和 chrome F12 能看到呀。
|
3
mystryl 2016-05-20 09:07:44 +08:00
你打开 request.text 的语句是啥
|
4
daiv OP @mystryl
```python s = requests.Session() s.cookies.update(cookies) s.headers.update(headers) r = s.get(url, verify=False) print r.headers print r.content print r.text ``` |
5
daiv OP @mystryl print requests.get(url, headers=headers).content (不用 session 也尝试了,这次吧 cookies 放进 headers 里面)
效果一样,还是只有尾巴 |
6
cdwyd 2016-05-20 09:16:56 +08:00
应该是 js 生成的吧, ctrl+u 看看是不是和你抓取的一样。
|
7
daiv OP @cdwyd view-source 看到的就是我说的:
<ul class="" data-a="0.00" data-b="222" data-c="0"> <li class="xxx"> <a href="javascript:void(0);" class="removeX">删除</a> test </button> </a> </li> </ul> 这是全部内容,根本没有 JS 。 |
8
fork3rt 2016-05-20 09:33:53 +08:00 via iPhone
网址发来看看
|
9
notgod 2016-05-20 09:35:51 +08:00
gzip
|
10
daiv OP @notgod Requests 会自动为你解码 gzip 和 deflate 传输编码的响应数据。 如果 gzip ,会显示乱码的
|
11
daiv OP @fork3rt http://gg.gg/secreturl (一会回复就不要贴网址,谢谢!帮同学研究的)
|
14
misaka19000 2016-05-20 10:23:57 +08:00
F12 看到的是生成好的源代码
真正的源代码需要在网页上右击 → 查看源代码 |
15
Cynic222 2016-05-20 10:24:18 +08:00 1
@daiv 同样正常结果
Out[9]: u'<ul class="betSlip full-text " \rdata-ub="0.00"\rdata-txr="0,-1,0,1,1#"\rdata-tcm="0"\rdata-bsuis="0" \rdata-xrte="1" \rdata-xrte-us="1"\rdata-stk-inc="0-2*2#2-250*10#250-500*10#500-1000*10#1000-2500*10#2500-5000*50#5000-10000*100#10000-25000*100#25000-50000*100#50000-99999999*100"\rdata-stk-mlt-inc="0-0.1*0.1#0.1-250*1#250-500*5#500-1000*10#1000-2500*50#2500-5000*100#5000-10000*100#10000-25000*100#25000-50000*100#50000-99999999*100"\rdata-isocode="RMB"\rdata-betguid=""\rdata-cus="N"> <li class="betslipHeader"> <a href="javascript:void(0);" class="removeAll">\u5168\u90e8\u5220\u9664</a> <div class="betslip-select" data-text="\u6a19\u6e96\u6295\u6ce8\u55ae"> <div id="BetSlipTypeSelectorWrapper"><div id="BetSlipTypeSelector">\u6a19\u6e96\u6295\u6ce8\u55ae</div></div> <div id="BetSlipTypesWrapper"> <div id="BetSlipTypeArrowTip"></div> <ul id="BetSlipTypes"><li data-item="1">\u6a19\u6e96\u6295\u6ce8\u55ae<span class="selected"></span></li><li data-item="2">Bankers\u5f0f\u6295\u6ce8</li></ul> </div> <select class="bet-slip-type" disabled="disabled" ><option selected="selected" value="1">\u6a19\u6e96\u6295\u6ce8\u55ae</option><option value="2">Bankers\u5f0f\u6295\u6ce8</option></select> </div> </li> <li class="emptyBetslip "><ul><li>\u8acb\u9ede\u64ca\u8ce0\u7387\u6dfb\u52a0\u6295\u6ce8</li></ul></li><li class="bsError feedBack hidden "> <div class="content"> <div class="image"><span class="icon"></span></div> <div class="text"></div> </div> </li><li id="pro" class="feedBack hidden"> <a href="javascript:void(0);" class="placeBetProgress abetslipBtn" data-atype="plc"><button><span class="buttonTextNoMessage">\u6b63\u5728\u8655\u7406\u4e2d</span><span class="buttonSmallSpinnerNoMessage"></span></button></a> </li> <li class="footer"> <span id="totalStake"></span> <a href="javascript:void(0);" class="acceptChanges abetslipBtn hidden"> <button>\u63a5\u53d7</button></a> <a href="javascript:void(0);" class="placeBet abetslipBtn failed-min-odds" data-atype="plc" > <button> <span class="totalStake"></span> <span class="isocode"></span> \u6295\u6ce8\r</button> </a> </li> </ul>' |
16
fork3rt 2016-05-20 10:24:54 +08:00 1
@daiv
f = open("1.txt", "a+") f.write(res.text.encode('utf-8')) f.close() 文本里也是有内容的。 pycharm 的 console 经常坑爹的。。 |
17
daiv OP |
22
Cynic222 2016-05-20 11:32:35 +08:00
直接开个 terminal 跑 ipython.
|