当前位置: 首页 > 后端技术 > Python

【入门级项目】征集《python进阶》教程

时间:2023-03-26 16:33:30 Python

首发于:https://mp.weixin.qq.com/s/Xo...前言难度:入门级python版本:3.7主要收获:爬虫experience+100;Pythonexperience+100主要会用到python和爬虫技术,入门级项目,比较简单,适合新手练习,看这篇之前最好对python和爬虫有一定的了解需求名称:合集《python进阶》教程网页:https://docs.pythontab.com/in...要求:收集网页所有进阶内容,整理成文档。收集具体进阶教程内容。需求分析先看需求,需要收集的东西不是很多。我们先打开网页看看目录。数据量不是很多,也就几十页,少之又少。对应需求,根据经验,列出一些我们需要解决的问题页面爬取问题多页面url获取问题整理成文档单页面爬取问题这个问题其实就是看爬取页面的请求结构。我们先看看源码里有没有我们需要的数据。在页面上找到一点。对于“小庆新”等特殊词,在键盘上按ctrl+U查看源码,按ctrl+F,搜索“小庆新”可以看到源码中直接包含了我们需要的数据,这样我们就可以judge,这八个成就是一个getrequest。如果没有反爬,会比较简单。只需构建最简单的获取请求并尝试导入请求r=requests.get('https://docs.pythontab.com/interpy/')print(r.text)print(r)运行它,打印输出有我们的数据需要(因为太多就不贴了),完美!多页面url获取问题我们可以看到需要采集的页面有几十个,并不多。就需求目标而言,我们其实可以一个一个的复制,但是这个没有技术含量,而且如果我们收集的页面很多,几十万,甚至几十万,手工复制的效率太高了低的。我们打开网页,可以看到有一个Next按钮,还有下一页的url。如果我们跳转到最后一页,我们会发现如果Next没有了,那么我们是不是可以通过这种方式获取到每一页的url呢?我们一直按Next按钮以获取下一页的url,直到最后一页。如果没有Next,则判断结束,整理成文档。检索出来的内容(去除标签)保存为txt,然后转成pdf格式,这样看起来更好看。但是因为保存的内容是没有格式的,转换后不好看,所以决定不去掉标签,直接保存为html文件,然后转成pdf这里是html转pdf的在线转换,里面还是很好用的:https://www.aconvert.com/cn/e...把代码实现逻辑理清了,代码实现也比较简单,上上下下代码importrequestsfromlxmlimportetreefromurllib导入parsedefget_html(url):"""网页采集数据保存在文件中args:url(str):要采集的urlreturns:str:下一页的url"""r=requests.get(url)html=etree.HTML(r.text)content=html.xpath('//div[@role="main"]')content0=etree.tostring(content[0])#print(content0)withopen("PythonAdvancedTutorial.html","ab+")asf:f.write(content0)_next=html.xpath("//a[contains(text(),'Next?')]/@href")ifnot_next:return''nexturl=parse.urljoin(url,_next[0])print(nexturl)returnnexturlurl='https://docs.pyntab.com/interpy/'而1:url=get_html(url)如果不是url:breakrun代码会在当前目录下生成一个python高级教程.html文件。打开一看还是可以的,不过我这里转成更通用的pdf类型。html转pdf,首先打开在线转换网页:https://www.aconvert.com/cn/e...选择html文件,选择转换的目标格式,点击转换,下载文件,打开pdf,格式完美!注:其实python有一个pdfkit库,可以把一个html转成pdf。有兴趣的朋友可以尝试关注我获取更多内容