吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1181|回复: 9
收起左侧

[已解决] 另外一个关于request无法定位新网页的问题(python)

 关闭 [复制链接]
hj170520 发表于 2020-5-25 12:45
本帖最后由 hj170520 于 2020-5-25 15:08 编辑

源代码如下:我准备爬取图书馆的“试用资源”,可能该网页网友无法打开。。。
我就先把问题抛出来吧!
[Python] 纯文本查看 复制代码
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)

返回来的值是
[Plain 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我知之甚少!

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

倾何 发表于 2020-5-25 13:47
[XHTML] 纯文本查看 复制代码
<!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
zheng10072 发表于 2020-5-25 13:50
跳转地址在相应头里面

    print(req.headers)
    print(req.text)
ReLoading 发表于 2020-5-25 13:56
带上你的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>
 楼主| hj170520 发表于 2020-5-25 14:34
zheng10072 发表于 2020-5-25 13:50
跳转地址在相应头里面

    print(req.headers)

print(req.headers)
返回的是
[Python] 纯文本查看 复制代码
{'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'}
 楼主| hj170520 发表于 2020-5-25 14:48
ReLoading 发表于 2020-5-25 13:56
带上你的cookies 提交 post,字段参数 以及url,按照下面的填写,建议使用session,可保持cookies

   
...

我这些参数应该包含在了这个网址里。
[Python] 纯文本查看 复制代码
url = 'http://www.htcases.com/kw/content/v_pdf.html?dbId=6&&caseId=40889&&caseType=1&&fileUrl='

然后它自己拿着这个参数打开了
[Python] 纯文本查看 复制代码
‘http://www.htcases.com/kw/content/v_reader.html ’



如果我直接把这个dbId=6;caseId=40889;caseType=1;fileUrl=‘’ 参数都发送给
[Python] 纯文本查看 复制代码
‘http://www.htcases.com/kw/content/v_reader.html ’

返回的status_code值不是200了
 楼主| hj170520 发表于 2020-5-25 15:03
ReLoading 发表于 2020-5-25 13:56
带上你的cookies 提交 post,字段参数 以及url,按照下面的填写,建议使用session,可保持cookies

   
...

我成功了,谢谢哥
 楼主| hj170520 发表于 2020-5-25 15:04
倾何 发表于 2020-5-25 13:47
[mw_shl_code=xhtml,true]


可以了,哥!
我改了哥cookies 以及给reader.html提交了个表单,返回了我需要的源代码
fanvalen 发表于 2020-5-25 15:29
想要模拟登录请用requests.post,post的data自己用浏览器f12找字段
 楼主| hj170520 发表于 2020-5-25 16:30
fanvalen 发表于 2020-5-25 15:29
想要模拟登录请用requests.post,post的data自己用浏览器f12找字段

我用cookies 登陆的,这个用的是图书馆的资源(他们是识别cookies,应该是这样的)
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 15:33

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表