盘点一个Python网络爬虫问题

Python进阶者
• 阅读 366

大家好,我是皮皮。

一、前言

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

盘点一个Python网络爬虫问题

他自己的代码如下:

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解析,后来【瑜亮老师】指出是参数加少了。

盘点一个Python网络爬虫问题

甯同学指出,需要在请求头里边加上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)

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

盘点一个Python网络爬虫问题

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

盘点一个Python网络爬虫问题

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

盘点一个Python网络爬虫问题

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

盘点一个Python网络爬虫问题

三、总结

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

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

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

盘点一个Python网络爬虫问题

点赞
收藏
评论区
推荐文章
Python进阶者 Python进阶者
2年前
编写一个闭包函数,要实现的功能是计数功能
大家好,我是皮皮。一、前言前几天在Python最强王者交流群有个叫【杰】的粉丝问了一个Python装饰器的问题,这里拿出来给大家分享下,一起学习下。二、解决过程这里【东哥】给出了解答,其实这个题目就是在考你装饰器的内容。代码如下:count0defwrapper(func):definner(args,kwargs):g
Python进阶者 Python进阶者
2年前
Python网络爬虫过程中,构建网络请求的时候,参数`stream=True`的使用
大家好,我是皮皮。一、前言前几天在Python最强王者交流群【德善堂小儿推拿瑜亮老师】分享了一个关于Python网络爬虫的问题,这里拿出来给大家分享下,一起学习。二、解决过程这里【PI】大佬提出了思路,的确可行。【皮皮】给了一份代码,取巧,这里就不展示了。后来【月神】给了一份可行的代码,如下所示:forurlinallurl:respr
Python进阶者 Python进阶者
1年前
为啥chrome查看到网页,只有5000多行,应该有1万多行才对
大家好,我是皮皮。一、前言前几天在Python白银交流群【磐奚鸟】问了一个Python网络爬虫处理的问题,这里拿出来给大家分享下。二、实现过程这里【惜君】给了一个指导,可能网站有限制数据量。这里【瑜亮老师】发现了问题所在,如下图所示:数据方面确实存在,顺利
Python进阶者 Python进阶者
1年前
大佬们,这个导包怎么写呀?本地执行可以,Linux执行报错
大家好,我是皮皮。一、前言前几天在Python最强白银交流群【喜靓仔】问了一个Python路径处理的问题,这里拿出来给大家分享下。下图是他的代码:二、实现过程这里【小王子】给了一个答案,如下所示:代码如下:fromsysimportpathpath.ins
Python进阶者 Python进阶者
1年前
有哪个大神知道这个词频要计算出具体的数,怎么添加代码吗?
大家好,我是皮皮。一、前言前几天在Python最强白银交流群【王王雪饼】问了一个Python处理词频的问题,这里拿出来给大家分享下。下图是他的代码:统计词频fromcollectionsimportCounterwordcountCounter(allwo
Python进阶者 Python进阶者
1年前
盘点一个VScode中Python解释器选择的问题
大家好,我是皮皮。一、前言前几天在Python最强王者群【PythonPie】问了一个Python解释器的问题,这里拿出来给大家分享下。二、实现过程这里【Ineverleft】问了【ChatGPT】,并给出了答案,如下所示:这可能是由于Conda环境未正确
Python进阶者 Python进阶者
1年前
盘点一个Python列表的基础题目
大家好,我是皮皮。一、前言前几天在Python最强王者群【eric】问了一个Python列表基础的问题,这里拿出来给大家分享下。代码如下:pythonlist1三、总结大家好,我是皮皮。这篇文章主要盘点了一个Python列表基础的问题,文中针对该问题,给出
Python进阶者 Python进阶者
2个月前
为啥chrome查看到网页,只有5000多行,应该有1万多行才对
大家好,我是皮皮。一、前言前几天在Python白银交流群【磐奚鸟】问了一个Python网络爬虫处理的问题,这里拿出来给大家分享下。二、实现过程这里【惜君】给了一个指导,可能网站有限制数据量。这里【瑜亮老师】发现了问题所在,如下图所示:数据方面确实存在,顺利
Python进阶者 Python进阶者
1年前
使用Python复制某文件夹下子文件夹名为"数据"文件夹下的所有以"DD"开头的文件夹到桌面
大家好,我是皮皮。一、前言前几天在Python最强王者群【魏哥】问了一个Python自动化办公处理的问题,这里拿出来给大家分享下。二、实现过程这里他自己有一个原始代码,但是实现的效果不尽人意。importshutilimportosimportsys导入s
Python进阶者 Python进阶者
1年前
盘点一个使用playwright实现网络爬虫的实战案例
大家好,我是皮皮。一、前言前几天在Python白银交流群【空翼】问了一个Pyhton网络爬虫的问题,这里拿出来给大家分享下。二、实现过程【喜靓仔】提出用playwright实现,后来他自己给出了代码,如下图所示:代码如下:fromplaywright.sy