Python爬虫笔记
记录python爬虫的学习历程。
30/08/2020
1)简单网页的获取

2)带参数的网页请求

01/09/2020
3) 获取动态加载内容。



今日小结:1)字典里面不能使用变量。要动态改变字典内容,需要每次索引到那个位置,然后赋值; 2)列表(list)合并不能用'+',会出现数据异常,要用方法extend()。
独立完成的第一个作业。难点在连续抓取多页数据直到末尾。需要考虑反回结果为空;反回结果第一页处理,后续页合并处理,何时终结。逻辑之外的难点在理解Json,字典和列表的特性,花了一些时间研究。
04/09/2020
今天完成了从一个网页的链接抓取另一个网页里的详细信息。 学习到的是先抓取一个数据,然后倒回来用for语句来循环抓取全部数据。给人的感觉就是这样思维上更简单很多,不会一开始就要考虑很多循环条件。这种新思维很新奇。



基本思路:抓取一条企业的详细链接;for抓取当前页中所有企业的详细链接并保存在列表中;构建抓取一条企业详细信息语句;for构建抓取列表中所有企业详细信息的语句;for构建抓取所有页面中企业详细链接的语句。
06/09/2020
这两天搞正则表达式,所以拖慢了进度。现在的学习方法是‘干就是了’,有不懂的再返回去补这块知识。这样比从头一点一点学基础要高效得多。那样学着学着就会迷失,不知道最终目的是什么。和学四六级英语很像,背字典是最傻(没有效率)的方法,应该是重点去背四六级考试里面出过的单词,这样才是效率最大化。搞完正则式马上返回学习爬下来的数据解析。
除了推荐网易的免费在线课程,另外推荐两个学习文档,有问题可以翻翻。
https://book.apeland.cn/details/338/
https://www.liaoxuefeng.com/wiki/1016959663602400/1017639890281664
ps: 花了很多时间弄明白如何在苹果系统下把图片保存到时间返回舱(远程共享文件夹)里面。任何已经链接的共享盘都有一个名字,比如Family。那么保存到这个文件夹下面,在python里面只要打开"/volumes/family/"就可以。macos下面最底层的文件夹叫Volumes,一般里面只有一个本地硬盘,如果链接了网络共享盘,则会出现共享盘的名称。所以在terminal下用 cd volumes -> ls 可以看到哪些盘现在可以访问。
- 爬取了糗事百科的图片。其实代码和上面的差不多。唯一不同的是如果从网页中抽取图片的超链接。这其中使用了正则来拆分。
<div class="thumb">
<a href="/article/123425765" target="_blank">
<img src="//pic.qiushibaike.com/system/pictures/12342/123425765/medium/VL06V8TSRUYN69YR.jpg" alt="糗事#123425765" class="illustration" width="100%" height="auto">
</a></div>
对这个包含了链接的源代码,进行正则提取,得到图片的链接:
1) 抽取thumb的段落
re = '<div class="thumb">.*?</div>'
2) 从这个段落中,再抽取img的段落
re = '<div class="thumb">.*?<img src="(.*?)" alt.*?</div>'
<7/09/2020>
自己用正则解析出了天涯一个帖子里的全部图片。使用两次正则解决问题。成就感满满的。

12/09/20
这两天单位的事忙得焦头烂额。每天会议下来大脑都是停滞的,因为开会要一边寻求各方意见一边要忙着记录,让大家都happy;还要留意会后要跟踪哪些未完成事项。往往会开完就做不动其他了。anyway, 这两天的进度停留在bs4 - BeautifulSoup. 刚搞完正则,一下跳到这个相对简单的解析方法,头脑有点短路。感觉好像刚才拿起一把能随心所欲分解网页的手术刀(正则),又被递了一把枪,那么之前学正则都是在干嘛?!(笑) <21/09/20> 这两天在搞xpath。Beautiful soup对于抓取有属性的tag列表非常友好,特别是select()语句。但是有些地方真的不够直白,需要花很多精力去调试程序。比如如果class属性里带空格,select语句就不那么好定位了。现在用xpath,表达式比bs要清晰很多。
<22/09/20>
用xpath去抓取了58同城的二手房信息。发现xpath真的直观好用!除了正则,最好用的就是xpath了。相比较而言,BeautifulSoup就像是上世纪的库,难用又反直觉。

26/09/2020
昨天结束了etree/xpath的学习。今天要进军“验证码”。从昨天爬下简历模版的作业来看,xpath对爬取存放于相同数据结构当中的数据相当的给力,基本一个语句搞定,甚至不需要for循环去每个分支里面拿取数据。妥妥取代BeautifulSoup的节奏。嗯,自从用了xpath,不知道还有什么理由去用bs4..
4/10/2020
昨天和今天学习了cookie的用法。之前试图用爬虫模拟登陆,总是没法拿到登陆后的页面信息。后来才发现是本地用cookies记录了本次登录,然后返回服务器,服务器才会传回登录后的页面信息。用session实例在恰当的时候替代requests实例,顺利拿到登陆后的数据。有意思。
8/10/2020
异步多线程池,告别冗长的网页加载等待期。
from multiprocessing.dummy from Pool

容易造成堵塞的过程放入一个子程序中(绿色方框),然后用pool的方法map来调用(橙色方框)。系统自动安排多线程执行,美滋滋。只是多线程不是按顺序返回,所以如果结果需要按顺序存放,会比较抓狂。
14/10/2020
抓取梨视频的视频文件。
因为网站更新了反爬机制,所以很多往上的攻略都失效了。从网页中直接获取视频链接已经行不通了,需要对AJAX的请求(java script)进行额外解析。
参考了这篇文章:https://blog.csdn.net/qq_43622190/article/details/108961736 如何解析java script的响应。另外用了pool(),用线程池来缩短下载时间。用时15秒把4个短视频都下载下来了。


21/10/2020
乖乖隆地咚,异步单线程弄得一头雾水。除了要定义异步子程序外,还要搞懂aiohttp的应用。暂时不是很了解,只能今后应用的时候再回来看看。异步的作用就是耗时的网络请求操作放一边,cpu先去执行其他操作,而不是等着io完成。不明觉厉,不明觉厉啊。如果不是大量的网络请求,估计我不会去用这个AIOHTTP了。


30/10/2020
这两天断断续续在学习selenium自动化工具,有点玩得出不来了。selenium驱动的浏览器打开网页,模拟了手动打开网页的操作,因此能更便捷的把以往需要监控Ajax请求来获取的数据,通过简单的方法获得;更不要说里面模拟点击,滚动,拖拽的活动,简直不能更好玩。

10/11/2020
终于完成了整个基础爬虫教程。下一旅程:python数据分析。
-
撒拉嘿哟 赞了这篇日记 2023-11-26 11:57:49
-
JLucky 赞了这篇日记 2023-09-23 16:05:39
-
生拌肉沫 赞了这篇日记 2023-04-28 08:47:05
-
大橙子 赞了这篇日记 2022-11-16 22:39:54
-
豆友7426426 赞了这篇日记 2022-10-10 15:06:59
-
Mr.duan 赞了这篇日记 2022-07-31 19:07:54
-
Mu 赞了这篇日记 2022-02-14 20:03:57
-
狗妹 赞了这篇日记 2021-02-13 13:14:16
-
千秋智业 赞了这篇日记 2021-01-23 23:27:07
-
ahhhhxi 赞了这篇日记 2020-11-03 09:13:45
-
Summer夏不夏 赞了这篇日记 2020-10-24 14:43:54
-
Carpediem 赞了这篇日记 2020-08-30 21:10:55