当前位置: 首页 > 科技观察

教你使用Curl2py自动构建爬虫代码并进行网络爬虫

时间:2023-03-20 15:37:02 科技观察

大家好,我是Python进阶。前几天跟大家分享了小明老师的两篇文章。是小明老师开发的一个Python库的盘点,4个牛逼的功能,一步步教你用Python爬虫获取B站10万UP主。这两篇文章都提到了curl2py命令。这个命令很神奇。通过curl2py命令,将网页请求参数直接转换为python代码。curl2py命令是小明老师开发的filestools库下的四大神器之一。Filestools目前包括树目录展示、文件差异比较、图片水印、curl请求python代码四个工具包。其他三个神器的介绍也可以在上面的超链接中找到。这里是源码地址,可以直接点击小明老师开发的库。https://pypi.org/project/filestools/前几天有粉丝问我curl2py命令怎么用。今天的文章是一个循序渐进的教程。希望大家以后都能用上。让我们来看看。1.安装您可以选择在命令提示符下使用pip安装filestools库。安装命令:pipinstallfilestools或pipinstallfilestools-ihttp://pypi.douban.com/simple/--trusted-host=pypi.douban.com二、传统方法1、目标网站安装完成后,我们就可以使用了。这里我们以小明老师介绍的网站为例进行说明。小数据网站:https://xxkol.cn/kol【注意】:首次登录本网站需要扫码登录才有浏览权限!2.网页请求现在我们需要获取网站数据,需要向网站发起请求。和往常一样,右键选择“Inspect”(如下图)或者直接按鼠标快捷键F12进入开发者模式。进入开发者模式,如下图。依次选择Network-->Fetch/XHR。如果我们尝试翻页查看数据,发现该网站实际上是JS加载的,所以我们需要构造请求头,如下图所示。按照以往的惯例,我们肯定需要手动将这些cookies、headers和params参数一一复制粘贴到我们的代码文件中。这样做是肯定可以的,但是很容易出错或者遗漏某个参数,费时费力。弄错了还得从头到尾一一检查,很麻烦。现在,小明老师开发的curl2py工具直接解放了我们的双手。我叫小明yyds!让我们来看看如何使用它。三、curl2py工具1、CopyascURL(bash)继续使用上一步的网站和分析,我们只需要右键点击JSURL,然后选择copy-->copyascURL(bash),如如下图所示。2.使用curl2py工具转换代码复制后,我们只需要在Pycharm中运行下面的代码,其中代码中的xxx就是上面复制的curl命令,粘贴替换下面的xxx即可。fromcurl2py.curlParseToolimportcurlCmdGenPyScriptcurl_cmd="""xxx"""output=curlCmdGenPyScript(curl_cmd)print(output)3.例子下面看实际运行。以这个网站为例。我只是复制它,然后替换并粘贴代码。如下。fromcurl2py.curlParseToolimportcurlCmdGenPyScriptcurl_cmd='''curl'https://xxkol.cn/api/klist?pagesize=20&page=2&name=&follower_start=&follower_end=&inter_start=&inter_end=&xxpoint_start=&xxpoint_end=&platform=&sex=&attribute=&category=&sort_type='\-H'authority:xxkol.cn'\-H'sec-ch-ua:"Chromium";v="92","NotA;Brand";v="99","MicrosoftEdge";v="92"'\-H'accept:application/json,text/plain,*/*'\-H'authorization:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyaW5mbyI6eyJvcGVuaWQiOiJvcEowYzB0V2p4RmJ4bTMwQ1FyZE9QSXNaWmlJIiwiaWQiOjEzMzc2fSwiaXNzIjoiaHR0cHM6XC9cL2JhY2sueHhrb2wuY24iLCJhdWQiOiJodHRwczpcL1wvYmFjay54eGtvbC5jbiIsImlhdCI6MTYyOTM1NzExNSwibmJmIjoxNjI5MzU3MTE1LCJleHAiOjE2Mjk5NjE5MTV9.W4l1RoQPNgCXBBBobO49QcfMjgYsM4nuKNtCmKshhHA'\-H'sec-ch-ua-mobile:?0'\-H'用户代理:Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/92。0.4515.131Safari/537.36Edg/92.0.902.73'\-H'sec-fetch-site:same-origin'\-H'sec-fetch-mode:cors'\-H'sec-fetch-dest:empty'\-H'referer:https://xxkol.cn/kol'\-H'accept-language:zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6'\-H'cookie:Hm_lvt_d4217dc2524e360ff487588dd84ad4ab=;xxtoken=eyJ0eXGciOiJIUzI1NiJ9.eyJ1c2VyaW5mbyI6eyJvcGVuaWQiOiJvcEowYzB0V2p4RmJ4bTMwQ1FyZE9QSXNaWmlJIiwiaWQiOjEzMzc2fSwiaXNzIjoiaHR0cHM6XC9cL2JhY2sueHhrb2wuY24iLCJhdWQiOiJodHRwczpcL1wvYmFjay54eGtvbC5jbiIsImlhdCI6MTYyOTM1NzExNSwibmJmIjoxNjI5MzU3MTE1LCJleHAiOjE2Mjk5NjE5MTV9.W4l1RoQPNgCXBBBobO49QcfMjgYsM4nuKNtCmKshhHA;Hm_lpvt_d4217dc2524e360ff487588dd84ad4ab=1629212'\--compressed'''output=curlCmdGenPyScript(curl_cmd)print(output)运行代码后,我们会在控制台得到具体的爬虫代码,如下图,也就是说你什么都不用做,小明大哥直接给你构造了代码,他不是一个无情的人吗?这里我直接把控制台输出的代码复制过来贴在这里,方便大家更直观的看。############################################作者:小明#######################################importrequestsimportjsonheaders={"authority":"xxkol.cn","sec-ch-ua":"\"Chromium\";v=\"92\",\"NotA;Brand\";v=\"99\",\"MicrosoftEdge\";v=\"92\"","accept":"application/json,text/plain,*/*","authorization":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyaW5mbyI6eyJvcGVuaWQiOiJvcEowYzB0V2p4RmJ4bTMwQ1FyZE9QSXNaWmlJIiwiaWQiOjEzMzc2fSwiaXNzIjoiaHR0cHM6XC9cL2JhY2sueHhrb2wuY24iLCJhdWQiOiJodHRwczpcL1wvYmFjay54eGtvbC5jbiIsImlhdCI6MTYyOTM1NzExNSwibmJmIjoxNjI5MzU3MTE1LCJleHAiOjE2Mjk5NjE5MTV9.W4l1RoQPNgCXBBBobO49QcfMjgYsM4nuKNtCmKshhHA","sec-ch-ua-mobile":"?0","user-agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/92.0.4515.131Safari/537.36Edg/92.0.902.73","sec-fetch-site":"同源","sec-fetch-mode":"cors","sec-fetch-dest":"empty","re??ferer":"https://xxkol.cn/kol","accept-language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6"}cookies={"Hm_lvt_d4217dc2524e36588dd84ad4ab":"1629232919","xxtoken":"eyJ0eXAiOiJKVhbGciOiJIUzI1NiJ9.eyJ1c2VyaW5mbyI6eyJvcGVuaWQiOiJvcEowYzB0V2p4RmJ4bTMwQ1FyZE9QSXNaWmlJIiwiaWQiOjEzMzc2fSwiaXNzIjoiaHR0cHM6XC9cL2JhY2sueHhrb2wuY24iLCJhdWQiOiJodHRwczpcL1wvYmFjay54eGtvbC5jbiIsImlhdCI6MTYyOTM1NzExNSwibmJmIjoxNjI5MzU3MTE1LCJleHAiOjE2Mjk5NjE5MTV9.W4l1RoQPNgCXBBBobO49QcfMjgYsM4nuKNtCmKshhHA","Hm_lpvt_d4217dc2524e360ff488dd84ad4ab":"16292212"}params={"pagesize":"20","page":"2","名称":"","follower_start":"","follower_end":"","inter_start":"","inter_end":"","xxpoint_start":"","xxpoint_end":"","platform":"","sex":"","attribute":"","category":"","sort_type":""}res=requests.get("https://xxkol.cn/api/klist",params=params,headers=headers,cookies=cookies)print(res.text)Yoho,这段代码直接呈现给你。老实说,这段代码比我们自己写的还要好。真的是tql!有的吃瓜群众可能要问了,小Edit,这段代码能跑吗?当然可以!让我们一起运行吧!直接在Pycharm中复制控制台代码,去掉Pycharm自带提示的首末两行,然后就可以运行了,右键运行,得到下图的结果,可以看到返回了code0,说明程序运行成功,可以看到滚动条那么小,可以想象数据量还是挺大的。这个数据一看就是json格式的,结果直接放在网上的json网站上查看。JSON在线分析网站:https://www.sojson.com/然后点击红框中的check/format,可以看到json格式的数据,如下图。现在看起来是不是清爽多了?4.总结我是一个高级Python用户。本文主要介绍curl2py工具及其使用方法。curl2py这个工具确实是神器,功能强大,也很方便。有了它,复制粘贴网页请求数据等传统方法基本上都可以为您搞定,省事、省心、省力,也不用担心翻车。朋友,你学会了吗?快用起来!