盘点一个Python网络爬虫问题

news/2024/7/19 11:53:48 标签: python, 爬虫, 开发语言

点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

在天愿作比翼鸟,在地愿为连理枝。

大家好,我是皮皮。

一、前言

前几天在Python最强王者群【刘桓鸣】问了一个Python网络爬虫的问题,这里拿出来给大家分享下。

6b507c754c0574ec2a9310a7d6231f94.png

他自己的代码如下:

import requests

key = input("请输入关键字")

res = requests.post(
    url="https://jf.10086.cn/cmcc-web-shop/search/query",
    data={
    "sortColumn" : "default",
    "sortType": "DESC",
    "pageSize": "60",
    "pageNum": "1",
    "firstKeyword": key,
    "integral": "",
    "province": ""},
    headers={"User_Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36"}
)


print(res.json())

二、实现过程

这里【隔壁😼山楂】指出拿到的数据需要用json解析,后来【瑜亮老师】指出是参数加少了。

a193390036cac1607da8ff7021ce19ba.png

甯同学指出,需要在请求头里边加上origin,后来【eric】给出了一个对应代码,如下所示:

import requests


headers = {
    "authority": "jf.10086.cn",
    "accept": "*/*",
    "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
    "content-type": "application/x-www-form-urlencoded;charset=UTF-8",
    "origin": "https://jf.10086.cn",
    "referer": "https://jf.10086.cn/",
    "sec-ch-ua": "\"Microsoft Edge\";v=\"113\", \"Chromium\";v=\"113\", \"Not-A.Brand\";v=\"24\"",
    "sec-ch-ua-mobile": "?0",
    "sec-ch-ua-platform": "\"Windows\"",
    "sec-fetch-dest": "empty",
    "sec-fetch-mode": "cors",
    "sec-fetch-site": "same-origin",
    "sessionid": "",
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.42"
}
cookies = {
    "sajssdk_2015_cross_new_user": "1",
    "sensorsdata2015jssdkcross": "%7B%22distinct_id%22%3A%221882e060ca319-0c9999999999998-7b515477-921600-1882e060ca46ed%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTg4MmUwNjBjYTMxOS0wYzk5OTk5OTk5OTk5OTgtN2I1MTU0NzctOTIxNjAwLTE4ODJlMDYwY2E0NmVkIn0%3D%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%22%2C%22value%22%3A%22%22%7D%2C%22%24device_id%22%3A%221882e060ca319-0c9999999999998-7b515477-921600-1882e060ca46ed%22%7D",
    "BSFIT_EXPIRATION": "1684453169465",
    "BSFIT_DEVICEID": "eNgfgPaqBaS8qXzJHKXgXxJUCen3U5WF8tO1cjBaMqaDL7EKt2xK0J5XwThnB_kC-VbJC2t-N4axkF2UXAKhRvM7w7kNMRWX8pyxlMitEPPbnWVSnXSU4e2MZvpGBme1L3PX7et2B40xYhXg0MpYpfmUtnuJJTEQ"
}
url = "https://jf.10086.cn/cmcc-web-shop/search/query"
data = {
    "sortColumn": "default",
    "sortType": "DESC",
    "pageSize": "60",
    "pageNum": "1",
    "firstKeyword": "食用油",
    "integral": "",
    "province": ""
}
response = requests.post(url, headers=headers, cookies=cookies, data=data)

代码运行之后,可以得到预期的数据:

68c1693d3e8c4fb2eb123afa0dcbd30b.png

这里【甯同学】也给出了对应的代码,如下所示:

55d8d6297e5a4be3ed03d03e96413aee.png

后来【瑜亮老师】测试发现,请求头里边只需要增加ua和origin就可以了。

5925e11348b61e8f77ad8f65766e6f77.png

顺利地解决了粉丝的问题。

969c8544080f21be032d65105a0d8882.png

三、总结

大家好,我是皮皮。这篇文章主要盘点了一个Python网络爬虫的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

最后感谢粉丝【刘桓鸣】提问,感谢【隔壁😼山楂】、【瑜亮老师】、【eric】、【甯同学】给出的思路和代码解析,感谢【冷喵】、【Ineverleft】、【༺࿈黑科技·鼓包࿈༻】等人参与学习交流。

【提问补充】温馨提示,大家在群里提问的时候。可以注意下面几点:如果涉及到大文件数据,可以数据脱敏后,发点demo数据来(小文件的意思),然后贴点代码(可以复制的那种),记得发报错截图(截全)。代码不多的话,直接发代码文字即可,代码超过50行这样的话,发个.py文件就行。

4e6e8e4af00270b90eb87095fe4be164.png

大家在学习过程中如果有遇到问题,欢迎随时联系我解决(我的微信:pdcfighting1),应粉丝要求,我创建了一些高质量的Python付费学习交流群和付费接单群,欢迎大家加入我的Python学习交流群和接单群!

f18c8508f83356fb25803a9c10cf7a12.png

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

7e48b7a78d8962fa1d3e75dd48b34fe8.jpeg

------------------- End -------------------

往期精彩文章推荐:

  • if a and b and c and d:这种代码有优雅的写法吗?

  • Pycharm和Python到底啥关系?

  • 都说chatGPT编程怎么怎么厉害,今天试了一下,有个静态网页,chatGPT居然没搞定?

  • 站不住就准备加仓,这个pandas语句该咋写?

694be067e69fde34f82c245e48397625.png

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧~~


http://www.niftyadmin.cn/n/409578.html

相关文章

Vue3中集成Unreal 5.2 像素流(Pixel Streaming插件)

目录 1. 创建一个Unreal项目2. 启用Pixel Streaming插件3. 下载Unreal 5.2对应的Pixel Streaming Infrastructure4. 创建一个Vue项目5. 推流方式一:使用Unreal Engine 5.26. 推流方式二:打包项目参考资源: 1. 创建一个Unreal项目 默认大家都…

每日三问-前端(第十八期)

先来回顾一下上期的问题及答案: 2023年6月7日 1. 组件间通信是指在 Vue.js 中,不同组件之间进行数据或事件的传递和交互的过程。常用的组件通信方式包括: 父子组件通信:通过 props 属性将数据从父组件传递给子组件,子组…

chatgpt赋能python:小黑框:Python程序员必备利器

小黑框:Python程序员必备利器 如果您是一名Python程序员,小黑框(Terminal)一定不陌生。小黑框是一种基于文本的用户界面,通常用于执行命令行任务,编写或调试代码等。Python程序员可以通过小黑框完成许多任…

环保液压设备系统比例阀放大器

环保液压设备系统是一种采用节能、环保设计理念和技术制造的液压设备。它主要由高效能的液压元件、低能耗的液压泵和控制系统组成,旨在减少能源消耗和环境污染。 环保液压设备系统已经广泛应用于各种工业领域,包括建筑、制造业、能源、矿业等。特别是在…

练习:缺陷Defects/感染Infections/失败Failure

练习:缺陷Defects/感染Infections/失败Failure public static int findLast(int[] x, int y) {for (int i x.length - 1; i > 0; i--) {if (x[i] y) {return i;}}return -1;}/** If x null throw a NullPointerException, else return* the number of posit…

inux查看某个进程内存占用情况以及/proc/pid/status解释

以nginx 为例 1.top top -b -n 1 |grep nginx|awk ‘{print “VIRT:”$5,“RES:”$6,“cpu:”$9"%“,“mem:”$10”%"}’ 或者简单的top -p 进程id. ps aux | grep nginx VSZ – 虚拟地址空间大小 --> 与top 的 VIRT 对应 RSS – 实际物理内存大小 --> 与top…

一个奇葩的问题

大家好,这里是极客重生,最近遇到一个奇葩的网络问题,分享给大家,看完一定会觉得很奇葩。 问题现象 客户反馈有一个server端S, 两个client端C1, C2, S的iptables规则对C1, C2都是放通的,但是C2无法连接上S&a…

代码开发优化细节

前言 ?> 代码优化的目标是 减小代码的体积提高代码运行的效率 代码优化细节 尽量指定类、方法的final修饰符 带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定…