python爬⾍的⼼得与总结
最近⽼板让搞python爬⾍,提取地图中⽔库位置。在开展下⼀段探索前,先记⼀些⼼得体会。
⼀、⼯欲善其事必先利其器望甜
想要爬取⽹站上的信息,必须有⼀个好的⼯具。firefox和chrome都有不错的⼯具,⽤chrome⽐较多,主要讲⼀下它的使⽤。喜欢探索细节的⼩伙伴移到下⾯的链接:《》以及《》。我在这⼉介绍⼀些⾼频使⽤的的功能。 1. F12:快捷键,(更多⼯具——开发者⼯具)。可以直接查看当前页⾯的html结构。有⼀点要注意,当前页⾯的html结构可能是Js动态⽣成的。⽐如淘宝⽹页的Josn数据源,但在开发者⼯具下是HTML结构。这个时候使⽤⿏标右键——查看源代码,可以看到json数据。
2.element选择键,F12后,下图中标⽰的⽅框内选项可以直接在页⾯中检索到对应的HTML标签位置——即在页⾯中点击选取。 sf1995>征服者f313
⼀些变量函数,但因为没⽤到,所以没太多研究。有了解的可以分享下。 4.动态⽹页下,console控制台会出现⼀些链接,注意前⾯的信息:XHR。在这⾥插⼀点介绍,了解AJAX的⼩朋友可直接跳过。它是js进⾏http通讯的接⼝,现在也有新的版本,其实现动态刷新的⼯具。喜欢细节的看下⾯的链接《》和《》以及《》。好回到chrome⼯具,点击console下的链接后(下图中1),跳转到Network下,对应的信息⽂本会有⼏秒钟的变⾊,不到的请注意上⾯的filter选项(下图中2)。network下各字段的⼀些信息,更多请看本段开头链接,这⼉讲两个有⽤的:在name字段(下图中3)下点击⿏标左键,可查看返回的response信息;点击右键,可以复制curl信息,这点⽐较重要,待会有讲到。
常⽤到的就这些,有其他的以后再更新。
⼆、磨⼑不误砍柴⼯
后摄影
这点体会太深了。我以前做过⽹页,了解其中的逻辑(如有需要了解⽹页及⽹页结构的⼩伙伴,强烈推荐《》)。对python编程也算是熟悉吧。然后我就直接上⼿去搞爬⾍,爬⾍多是第三⽅库,⾥⾯的⼀些参数的使⽤是必须了解其中意义的,不然很容易⾛弯路,我因此浪费了些时间。所以强烈建议:应该先抽出些时间了解这些常⽤到的⼯具的基本知识。事实上,python爬⾍的这些库函数许多是相似的,了解起来并不费太多时间。机械心脏
1.静态⽹页:静态⽹页以及少量表单交互的⽹站可以使⽤如下的技术路线:
requests + bs4 + re——分别是⽹页下载、BeautifulSoup提取⽹页结构信息和正则表达式。这三个为对应python库名,⽹上相关内容很多。
金纳米粒子
scrapy——是⼀种爬⾍模块,可以配合re⼀块使⽤,也⽐较容易了解。以上内容的学习需要感谢Mooc⽹站北京理⼯⼤学的课程《》,简单全⾯的介绍了静态爬⾍的使⽤。
2.动态⽹页。简单动态⽹页,需要有点击或者提交的可以参考selenium + phantomJS组合使⽤。selenium是模拟浏览器操作的⼯
具,phantomJS则是没有⽤户交互界⾯的“浏览器”,你可以认为是⼀种模拟⽤户点击操作的⼯具组合,来实现与服务器的交互。
我爬取的是⽹页地图中的信息,所以要更复杂⼀些。这也是下⼀阶段需要探索的东西,⽹上的资料也不是很多。不过现在也不是毫⽆头绪:对动态⽹页的逆向⼯程也是可以获取数据的。动态⽹页是使⽤JS动态加载的,在chrome⼯具中点击console⼯具,查看post的XHR信息,点击XHR返回信息的右键,可以查看curl,将此链接放到浏览器的地址栏,可以直接看到返回的json信息。这⼉有个关键词:curl
当然,在没有出结果之前还不能确定现在的思路对于不对,对于复杂的动态⽹页,还需要更多的探索。先在此做个过去的总结,也欢迎了解和正在了解的给些意见。