发布日期:2024-09-25 05:46 点击次数:159
鸦雀无声高中 自慰,玩爬虫玩了一个多月了。
我愈发以为,爬虫其实并不是什么高出高妙的时间,它的价值不在于你使用了什么高出牛的框架,用了何等了不得的时间,它不需要。它仅仅以一种自动化征集数据的吝惜具,大略得到到想要的数据,等于它最大的价值。
我的爬虫课老诚也常跟咱们强调,学习爬虫最紧迫的,不是学习内部的时间,因为前端时间在遏抑的发展,爬虫的时间便会跟着转变。学习爬虫最紧迫的是,学习它的旨趣,不谋而合。
爬虫说白了是为了惩办需要,简便生存的。如果大略在日常生存中,猜度并应用爬虫去惩办实质的问题,那么爬虫的信得过意念念也久发挥出来了。
这是些漫谈啦,有感而发汉典。
最近有点片荒,不知谈该看什么电影,而且有些电影在网上找好久也找不到资源。其后我了解到这个网站,发现最近好多可以的电影上头齐有资源(这里我就先不论它的来源正不正规啦,#掩面)。
是以此次咱们要爬取的网站是:《电影天国》,屯一些电影,等败兴的时刻拿出来望望,消遣消遣亦然可以。
红色av此次的网站,从爬虫的时间角度上来讲,难度不大,而且可以说瑕瑜常粗陋了。然而,它实用啊!你想嘛,早上上班前跑一下爬虫,晚上回家以后如故有几十部最新大片在你硬盘里等着你啦,累了一天躺床上望望电影,这种嗅觉是不是很爽啊。
而且正因为这个爬虫比拟粗陋,是以我会写的稍稍细少许,争取让 python 小白们也能尽可能看懂,况且大略在这个爬虫的基础上修改,得到爬取这个网站其他板块或者其他电影网站的爬虫。
写在前边的话
在编写爬虫门径之前,我先捋一捋咱们的念念路。
爬虫的旨趣,是通过给定的一个 URL(等于近似于 这么的,俗称网址的东东) 央求,去拜访一个网页,得到阿谁网页上的源代码(不知谈源代码的,粗率翻开一个网页,右键,巡逻网页源代码,出来的一大堆像乱码通常的东西等于网页源代码,咱们需要的数据就藏在这些源代码内部)并复返来。 然后,通过一些技能(比如说json库,BeautifulSoup库,正则抒发式等)从网页源代码中筛选出咱们想要的数据(虽然,前提是咱们需要分析网页结构,知谈我方想要什么数据,以及这些数据存放在网页的哪儿,存放的位置有什么特征等)。 终末,将咱们得到到的数据按照一定的模式,存储到土产货或者数据库中,这么就完成了爬虫的全部职责。虽然,也有一些 「骚操作」,如果你嫌爬虫着力低,可以开多线程(等于十分于几十只爬虫同期给你爬,效憨平直翻了几十倍);如果惦记爬取频率过高被网站封 IP,可以挂 IP 代理(十分于打几枪换个场所,对方网站就不知谈你究竟是爬虫如故宽泛拜访的用户了);如果对方网站有反爬机制,那么也有一些骚操作可以绕过反爬机制(有点黑客攻防的嗅觉,有木有!)。这些齐是后话了。
爬虫部分
一、分析网站结构(以动作片电影为例)
1. 分析网页的 URL 的组成结构
最初,咱们需要分析网页的 URL 的组成结构,主要蔼然两方面,一是怎样切换遴荐的电影类型,二是网页怎样翻页的。
点击网页上的电影类型的按钮,不雅察地址栏中的 URL ,发现网址和电影类型的关连如下:
电影类型 网址 剧情片 https://www.dy2018.com/0/ 笑剧片 https://www.dy2018.com/1/ 动作片 https://www.dy2018.com/2/ 爱情片 https://www.dy2018.com/3/ 科幻片 https://www.dy2018.com/4/ 动画片 https://www.dy2018.com/5/ 悬疑片 https://www.dy2018.com/6/ 惊悚片 https://www.dy2018.com/7/ 恐怖片 https://www.dy2018.com/8/ 纪录片 https://www.dy2018.com/9/ ...... ...... 晦气片 https://www.dy2018.com/18/ 武侠片 https://www.dy2018.com/19/ 古装片 https://www.dy2018.com/20/发现礼貌了吧,以后如果想爬其他类型的电影,只须转变 url 中的数字即可,以致你可以写一个轮回,把通盘板块中的电影全部爬取下来。
粗率翻开一个分类,咱们鼎新到页面的最底下,发现这里有翻页的按钮,点击按钮翻页的同期,不雅察 url 的变化。
页码 URL 第一页 https://www.dy2018.com/2/index.html 第二页 https://www.dy2018.com/2/index_2.html 第三页 https://www.dy2018.com/2/index_3.html 第四页 https://www.dy2018.com/2/index_4.html除了第一页是 「index」外,其余页码均是 「index_页码」的面孔。
是以咱们基本掌执了网站的 url 的组成面孔,这么咱们就可以通过我方构造 url 来拜访纵情类型电影的纵情一页了,是不是很酷。
2. 分析网站的页面结构
其次,咱们分析一下网站的页面结构,看一看咱们需要的信息齐藏在网页的什么场所(在这之前咱们先要明确一下咱们需要哪些数据),由于咱们这个方针是下载电影,是以对我有用的数据只须两个,电影称呼和下载电影的磁力诱骗。
按 F12 召唤出修复者器具(这个器具可以匡助你快速定位网页中的元素在 html 源代码中位置)。
然后,咱们可以发现,电影列表中,每一部电影的信息存放在一个 <table> 标签里,而电影的名字,就藏在内部的一个 <a> 标签中。电影下载的磁力诱骗在电影的笃定页面,而电影笃定页面的网址也在这个 <a> 标签中( href 属性的值)。
而下载的磁力诱骗,存放在 <tbody> 标签下的 <a> 标签中,是不是很好找啊!
终末咱们来缕一缕念念路,霎时咱们准备这么操作:通过前边的网址的构造规矩,拜访到网站的某一页,然后得到到这个页面里的通盘 table 标签(这里存放着电影的数据),然后从每一个 table 标签中找到存有电影称呼的 a 标签(这里可以拿到电影称呼以及笃定页面的网址),然后通过这里得到的网址拜访电影的笃定页面,在笃定页面挑选出 <tbody> 标签下的 <a> 标签(这里存放着电影的下载诱骗),这么咱们就找到了咱们所需要的全部数据了,是不是很粗陋啊。
二、爬虫编码阶段
爬虫的门径,我一般风气把它分红五个部分, 一是主函数,动作门径的进口,二是爬虫调节器,三是收罗央求函数,四是网页贯通函数,五是数据存储函数。
get_data :其参数是缱绻网页 url,这个函数可以模拟浏览器拜访 url,得到并将网页的内容复返。 parse_data :其参数是网页的内容,这个函数主如果用来贯通网页内容,筛选提真金不怕火出要津的信息,并打包排列表复返。 save_data :其参数是数据的列表,这个函数用来将列表中的数据写入土产货的文献中。 main :这个函数是爬虫门径的调节器,可以笔据事前分析好的 url 的规矩,遏抑的构造新的央求 url,并调用其他三个函数,得到数据并保存到土产货,直到休止。 if __name__ == '__main__' :这是主门径的进口,在这里调用 main 函数,启动爬虫调节器即可。1. 收罗央求函数 :get_data (url)
厚爱拜访指定的 url 网页,并将网页的内容复返,此部分功能比拟粗陋固定,一般不需要作念修改(除非你要挂代理,或者自界说央求头等,可以作念一些相应的颐养)。
2. 网页贯通函数:parse_data(html)
这个函数是通盘爬虫门径的中枢所在,合座念念路在上一部分如故讲过了。我这里使用的库是 BeautifulSoup。
这部分的写法多各类种,有许多发挥的空间,也莫得什么太多固定的模式,因为这部分的写法是要跟着不同网站的页面结构来作念颐养的,比如说有的网站提供了数据的 api 接口,那么复返的数据等于 json 模式,咱们只需要调用 json 库就可以完成数据贯通,而大部分的网站只可通过从网页源代码中一层层筛选(筛选技能也多各类种,什么正则抒发式,beautifulsoup等等)。
这里需要笔据数据的面孔来遴荐不同的筛选战略,是以,知谈旨趣就可以了,风气什么门径就用什么门径,归正终末能拿到数据就好了。
3. 数据存储函数:save_data(data)
这个函数方针是将数据存储到土产货文献或数据库中,具体的写法要笔据实质需要的存储面孔来定,我这里是将数据存放在土产货的 csv 文献中。
虽然这个函数也并不单能作念这些事儿,比如你可以在这里写一些粗陋的数据处理的操作,比如说:数据清洗,数据去重等操作。
4. 爬虫调节器:main()
这个函数厚爱笔据 url 生陋习矩,构造新的 url 央求,然后按次调用收罗央求函数,网页贯通函数,数据存储函数,爬取并保存该页数据。
所谓爬虫调节器,等于休止爬虫什么时刻运行爬,几许只爬虫一齐爬,爬哪个网页,爬多久休息一次,等等这些事儿。
5. 主函数:门径进口
主函数动作门径的进口,只厚爱启动爬虫调节器。
这里我一般风气在 main() 函数前后输出一条语句,以此判断爬虫门径是否宽泛启动和休止。
三、门径运行休止
运行了两个小时傍边吧,终于爬罢了 113 页,共 3346 部动作片电影的数据(蓝本不啻这些的,然而有一些电影莫得提供下载诱骗,我在 excel 中排序后平直办动剔除了)。
然后想看什么电影的话,平直复制这些电影下载的磁力诱骗,到迅雷内部属载就好啦。
四、爬虫门径的一些小优化
1. 在网站提供的下载诱骗中,我试了一下,发现 magnet 着手的这类诱骗放在迅雷中可以平直下载,而 ftp 着手的诱骗在迅雷中总暴露资源得到失败(我不知谈是不是我翻开的方式不对,归正等于下载不来),于是我对门径作念了一些小的颐养,使其只得到 magnet 这类的诱骗。
修改的方式也很粗陋,只需要颐养 网页贯通函数 即可(爬虫的五个部分是相对孤苦的,修改时只需颐养相应的模块即可,其余部分无需修改)。
注释代码 26 行处,我加了一个 if 语句的判断,如果下载诱骗中包含 magnet:?xt=urn:btih 字符串,则视为灵验诱骗,下载下来,不然跳过。
2. 我一直在想能不可有个概念让迅雷一键批量下载咱们爬到的电影。使用 python 主宰第三方的软件,这其实挺难的。不事其后找到了一种门径,也算是惩办了这个问题。
等于咱们发现迅雷软件启动后,会自动检测咱们的剪切板,只须咱们复制了下载诱骗,它便会自动掸出下载的指示框。借助这个念念路,咱们可以使用代码,将下载的诱骗复制投入剪切板,等下载框自动出现后,手动说明运行下载(这是我当今猜度的最佳的概念了,不知谈诸位大佬有莫得更好的念念路,接待拓荒交流)。
亲测可以完毕,然而。。。不提议尝试(你能联想迅雷翻开的刹那间创建几百个下载任务的场景吗?归正我的电脑是缓了好久好久才响应过来)。宇宙如故老丰足实的,手动复制诱骗下载吧(csv文献可以用 excel 翻开,竖着选中一列,然后复制,也能达到换取的成果) ,这种骚操作太蠢了如故不要试了。
写在后头的话
啰啰嗦嗦的写了好多,也不知谈要津的问题讲解晰了莫得。有那边没讲解晰,或者那边讲的不对适的话,接待骚扰。 其实吧,写著作,写博客,写教程,齐是一个学问再行熔真金不怕火内化的历程,在写这篇博客的时刻,我也一直在反复凝视我学习爬虫的历程,以及我爬虫代码一步步的变化,从一运行的通盘代码全部揉在主函数中,到其后把一些变动较少的功能提真金不怕火出来,写成单独的函数,再到其后酿成基本踏实的五大部分。
以至于在我其后学习使用 scrapy 框架时刻,惊东谈主的发现 scrapy 框架的结构跟我的爬虫结构有着异曲同工之妙,我的这个十分于是一个浅近版的爬虫框架了,纯靠我方摸索达到这个成果,我嗅觉如故挺有竖立感的。
以上所述是小编给宇宙先容的Python爬取并下载《电影天国》3千多部电影详解整合,但愿对宇宙有所匡助高中 自慰,如果宇宙有任何疑问请给我留言,小编会实时陈诉宇宙的。在此也相配感谢宇宙对剧本之家网站的复古!
您可能感兴趣的著作: Python爬虫初学教程01之爬取豆瓣Top电影 python使用re模块爬取豆瓣Top250电影 用Python 爬取猫眼电影数据分析《无名之辈》 Python应用Scrapy框架爬取豆瓣电影示例 Python爬取爱奇艺电影信息代码实例 Python完毕的爬取豆瓣电影信息功能案例 python完毕的爬取电影下载诱骗功能示例 Python使用mongodb保存爬取豆瓣电影的数据历程贯通 Python爬虫——爬取豆瓣电影Top250代码实例 python使用BeautifulSoup与正则抒发式爬取时光网不同地区top100电影并对比 python使用requests模块完毕爬取电影天国最新电影信息 一个粗陋的python爬虫门径 爬取豆瓣热度Top100以内的电影信息 python正则抒发式爬取猫眼电影top100 教你何如用python爬取爱奇艺热点电影