另外一个关于request无法定位新网页的问题(python)
本帖最后由 hj170520 于 2020-5-25 15:08 编辑源代码如下:我准备爬取图书馆的“试用资源”,可能该网页网友无法打开。。。
我就先把问题抛出来吧!
import requests
url = 'http://www.htcases.com/kw/content/v_pdf.html?dbId=6&&caseId=40889&&caseType=1&&fileUrl='
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Accept-Encoding': 'gzip, deflate',
'Accept-language': 'en-GB,en-US;q=0.9,en;q=0.8,ko;q=0.7'
# 'Referer': 'http://www.htcases.com/kw/content/v_pdf.html?dbId=6&&caseId=40889&&caseType=1&&fileUrl='
}
req = requests.get(url, headers=headers, allow_redirects=False)
print(req.text)
返回来的值是
<!DOCTYPE html>
<html>
<title></title> <!-- jQuery -->
<script type="text/javascript" src="/res/front/js/jquery-all.min.js"></script>
<script type="text/javascript" src="/res/front/js/jquery-form.js"></script>
<script type="text/javascript" src="/res/front/js/jquery-ui.min.js"></script>
<script type="text/javascript" src="/res/front/js/jquery.validationEngine.js"></script>
<script type="text/javascript" src="/res/front/js/jquery.validationEngine-zh_CN.js"></script>
<script type="text/javascript" src="/res/front/js/jquery-ui-1.8.18.custom.min.js"></script>
<!-- <script type="text/javascript" src="/res/front/js/iepng.js"></script> -->
<script type="text/javascript" src="/res/front/js/P_Style.js"></script>
<script type="text/javascript" src="/res/front/js/HT_JScript.js"></script>
<script type="text/javascript" src="/res/front/js/jquery.corner.js"></script>
<!--
<script type="text/javascript" src="/res/front/js/JScript.20130614.js"></script>
-->
<script type="text/javascript" src="/res/front/js/helpTree.js"></script>
<!--<script type="text/javascript" src="/res/front/js/h.js"></script> -->
<script type="text/javascript" src="/res/front/js/sweetalert.min.js"></script>
<script type="text/javascript" src="/res/common/My97DatePicker/WdatePicker.js"></script>
<body>
<form id="pdfReaderForm" action="/kw/content/v_reader.html" method="post">
<input type="hidden" id="dbId" name="dbId" value="6" />
<input type="hidden" id="caseId" name="caseId" value="40889" />
<input type="hidden" id="caseType" name="caseType" value="1" />
<input type="hidden" id="fileUrl" name="fileUrl" value="" />
</form>
</body>
<script type="text/javascript">
$(function() {
$("#pdfReaderForm").submit();
});
</script>
</html>
但问题是当我把http://www.htcases.com/kw/content/v_pdf.html?dbId=6&&caseId=40889&&caseType=1&&fileUrl= 输入浏览器的时候,
自动跳转到一个http://www.htcases.com/kw/content/v_reader.html 的一个查看pdf的网页,我通过抓包是可以抓到这个pdf文件的地址的。
但是这个跳转页面v_reader.html我没办法抓到它的源代码,所以无法爬取它的地址。
怎么办呢
上一个话题是跳转的代码在headers里的location,
莫非这个转址存在于js? js我知之甚少!{:301_1002:}
<!DOCTYPE html>
<html>
<title></title> <!-- jQuery -->
<script type="text/javascript" src="/res/front/js/jquery-all.min.js"></script>
<script type="text/javascript" src="/res/front/js/jquery-form.js"></script>
<script type="text/javascript" src="/res/front/js/jquery-ui.min.js"></script>
<script type="text/javascript" src="/res/front/js/jquery.validationEngine.js"></script>
<script type="text/javascript" src="/res/front/js/jquery.validationEngine-zh_CN.js"></script>
<script type="text/javascript" src="/res/front/js/jquery-ui-1.8.18.custom.min.js"></script>
<!-- <script type="text/javascript" src="/res/front/js/iepng.js"></script> -->
<script type="text/javascript" src="/res/front/js/P_Style.js"></script>
<script type="text/javascript" src="/res/front/js/HT_JScript.js"></script>
<script type="text/javascript" src="/res/front/js/jquery.corner.js"></script>
<!--
<script type="text/javascript" src="/res/front/js/JScript.20130614.js"></script>
-->
<script type="text/javascript" src="/res/front/js/helpTree.js"></script>
<!--<script type="text/javascript" src="/res/front/js/h.js"></script> -->
<script type="text/javascript" src="/res/front/js/sweetalert.min.js"></script>
<script type="text/javascript" src="/res/common/My97DatePicker/WdatePicker.js"></script>
<body>
<form id="pdfReaderForm" action="/kw/content/v_reader.html" method="post">
<input type="hidden" id="dbId" name="dbId" value="6" />
<input type="hidden" id="caseId" name="caseId" value="40889" />
<input type="hidden" id="caseType" name="caseType" value="1" />
<input type="hidden" id="fileUrl" name="fileUrl" value="" />
</form>
</body>
<script type="text/javascript">
$(function() {
$("#pdfReaderForm").submit();
});
</script>
</html>
首先呢,看下你这段js,其实这个表单就是pdfReaderForm是一个Post参数提交,使用了jQuery 事件 - submit() 方法
https://www.w3school.com.cn/jquery/event_submit.asp 跳转地址在相应头里面
print(req.headers)
print(req.text) 带上你的cookies 提交 post,字段参数 以及url,按照下面的填写,建议使用session,可保持cookies
<body>
<form id="pdfReaderForm" action="/kw/content/v_reader.html" method="post">
<input type="hidden" id="dbId" name="dbId" value="6" />
<input type="hidden" id="caseId" name="caseId" value="40889" />
<input type="hidden" id="caseType" name="caseType" value="1" />
<input type="hidden" id="fileUrl" name="fileUrl" value="" />
</form>
</body> zheng10072 发表于 2020-5-25 13:50
跳转地址在相应头里面
print(req.headers)
print(req.headers)
返回的是
{'Server': 'Apache-Coyote/1.1', 'Set-Cookie': 'JSESSIONID=5037F73E60C464A38CF22A05DE9E4BEE; Path=/; HttpOnly', 'Content-Type': 'text/html;charset=UTF-8', 'Content-Language': 'en-GB', 'Transfer-Encoding': 'chunked', 'Date': 'Mon, 25 May 2020 06:34:28 GMT'}
ReLoading 发表于 2020-5-25 13:56
带上你的cookies 提交 post,字段参数 以及url,按照下面的填写,建议使用session,可保持cookies
...
我这些参数应该包含在了这个网址里。
url = 'http://www.htcases.com/kw/content/v_pdf.html?dbId=6&&caseId=40889&&caseType=1&&fileUrl='
然后它自己拿着这个参数打开了
‘http://www.htcases.com/kw/content/v_reader.html ’
如果我直接把这个dbId=6;caseId=40889;caseType=1;fileUrl=‘’ 参数都发送给‘http://www.htcases.com/kw/content/v_reader.html ’
返回的status_code值不是200了
{:301_1003:} ReLoading 发表于 2020-5-25 13:56
带上你的cookies 提交 post,字段参数 以及url,按照下面的填写,建议使用session,可保持cookies
...
{:301_975:}我成功了,谢谢哥 倾何 发表于 2020-5-25 13:47
可以了,哥!
我改了哥cookies 以及给reader.html提交了个表单,返回了我需要的源代码{:301_1003:} 想要模拟登录请用requests.post,post的data自己用浏览器f12找字段 fanvalen 发表于 2020-5-25 15:29
想要模拟登录请用requests.post,post的data自己用浏览器f12找字段
{:301_986:}我用cookies 登陆的,这个用的是图书馆的资源(他们是识别cookies,应该是这样的)
页:
[1]