2023年8月1日发(作者:)
⼩⽩学Python之爬⾍篇(⼀)——爬取PPT⽹站模板说明菜狗⼤学⽣⼀枚,本着⽤什么学什么的原则,对之前简单学习的爬⾍进⾏略微系统的整理,⼀⽅⾯⽅便以后复习,另⼀⽅⾯也希望给需要的⼈⼀点参考,毕竟看了那么多⼤佬的博客,是时候开始回报社会了哈哈哈(尴尬笑)。本⼈对Python的了解不是很多,只是因为某个⼩项⽬的需求所以学习了⼀下,⽽且我很菜的(⼤实话),因此如果下⽂有误,还望各位批评指正。本⽂的简易爬⾍参考了某位⼤佬的博客,⼤佬的⽂章思路清晰,写的也简洁易懂,可惜因为是好⼏个⽉之前看的了,实在找不到⼤佬的⽂章,此处表⽰万分感谢。说回正题,本⽂主要实现对第1PPT⽹站(不知道这⾥要不要打码=_=,侵删)中PPT模板的爬取,属于爬⾍中较为简单基础的类型,适合同为⼩⽩的同学观看(巨佬请绕路)。基础知识1.对爬⾍的简单理解:利⽤编写代码实现机械化的从⽹页源代码中将我们想要的东西提取出来的⽅法,这些东西可以是⼀些特定的⽂字,也可以是⼀个个可下载的资源。本⽂主要讨论后者。对于可下载资源,我们只需要找到藏在⽹页源代码中的资源链接(URL)即可。通常,⼀个界⾯只会存在⼀个资源的模板。例如,唯美PPT模板分类下有1到10共10个不同的PPT,点击相应的PPT会进⼊详情界⾯,该PPT的下载链接就在其中,代码要做的⽆⾮是对这10个界⾯进⾏遍历,依次找出模板资源的URL。2.⽹页源代码怎么看:这个问题很简单啦,⼤多数浏览器都可以查看⽹页源代码,也不⽤我们对HTML的了解有多深。以第1PPT⽹站为例,模板详情界⾯就有下载按钮,在源代码⾥该按钮的链接就是资源⽂件的URL。如下图。3.正则表达式:⼀个超级有⽤的东西(虽然内容太多我到现在也没有懂得很多),通常同⼀个⽹站的同类型⽹页的布局、代码都是类似的或相同的,通过正则表达式我们可以精确的匹配到⽹页源代码中我们想要的内容。就像上⾯这张图⽚,我们可以看到链接在
# 定义线程池最多容纳30个线程p = ThreadPoolExecutor(30) # 链接到第⼀ppt免费ppt模板的界⾯def get_Index(url): respose = (url) #响应状态码为200代表请求成功 if _code == 200: print("⽹站链接成功") return else: print("⽆法链接到模板界⾯") return# 解析获取到的html代码,获取当前页⾯每个ppt模板的链接def parse_Index(res): res = () # 正则表达式获取模板链接 urls = l(r'h2.*?href="(.*?)"', res, re.S) for url in urls: # 提交到线程池 (get_Detail(url))# 模板详情界⾯def get_Detail(url): if not with('http'): url = '%s' % url detailRespose = (url) #成功获取 if _code == 200: ppt_url = l(r'class="downurllist".*?href="(.*?)"', , re.S) #避免单线程获取多个url ppt_url = ppt_url[0] if ppt_url: print(ppt_url) save(ppt_url) else: print("⽆法连接的详情界⾯") return# 将⽂件保存def save(ppt_url): ppt = (ppt_url) if _code == 200: #利⽤md5值作为⽂件名 m = 5() (ppt_('utf-8')) (str(()).encode('utf-8')) #⽂件保存路径与⽂件写⼊ directorypath='E:ppt' filepath = r'E:ppt%' % est() if not (directorypath): rs(directorypath) with open(filepath, 'wb') as f: (t) else: print("⽆法下载") returndef main(): #以PPT模板第5-7页为例 for i in range(5, 7): (get_Index, '/moban/ppt_moban_%' % i).add_done_callback(parse_Index)if __name__ == '__main__': main()运⾏截图以上是⼀个简单爬⾍的编写过程,不当之处望请指正。下⼀篇将继续介绍稍微复杂⼀点的、资源URL并⾮直接放在源代码中的⽹页资源爬取代码的编写。
发布者:admin,转转请注明出处:http://www.yc00.com/news/1690835716a441387.html
评论列表(0条)