抓取百度博客文章的Python脚本
时间:2010-09-21 来源:alertx
抓取百度博客文章的Python脚本
2010-04-22 23:06
本文转载自:http://hi.baidu.com/yobin/blog/item/38cdd3a26fb2baa7cbefd0af.html
翻出了去年的代码,这是在家里保存的比较老的了。最后的代码主要还是在公司完成的,没弄回来,所以这个代码就没有多线程了。从代码可以看出,我已经开始抛 弃sgmllib之类的东西了,也抛弃split、replace这样的低级操作,开始使用正则了,沿用到现在。
可能是百度空间发生了变化,我的正则表达式似乎已经失效了,需要看页面代码重写。再次总结一 下抓取的心得:
1、分析页面研究规律,想出一个抓取的思路。
例如百度空间,我可以按博客目录来,先枚举所有目录,然后找出在每个目录下的所有文章url,逐一下载下来。
我在代码里是另外一个思路,从http://hi.baidu.com/blog/index/0(最后的数字逐步加1)开始枚举,从每个页面中解析出博 客文章的url,直到解析出来没有文章url为止。
枚举获得博客文章的url,可以放在一个字典或者下载列表里,然后再通过多线程下载了。
一句话:获得要下载的链接,将所有的下载链接通过多线程下载。
2、尽量学会使用正则表达式。
3、如果要下载的多,务必要学会使用多线程。
翻出了去年的代码,这是在家里保存的比较老的了。最后的代码主要还是在公司完成的,没弄回来,所以这个代码就没有多线程了。从代码可以看出,我已经开始抛 弃sgmllib之类的东西了,也抛弃split、replace这样的低级操作,开始使用正则了,沿用到现在。
可能是百度空间发生了变化,我的正则表达式似乎已经失效了,需要看页面代码重写。再次总结一 下抓取的心得:
1、分析页面研究规律,想出一个抓取的思路。
例如百度空间,我可以按博客目录来,先枚举所有目录,然后找出在每个目录下的所有文章url,逐一下载下来。
我在代码里是另外一个思路,从http://hi.baidu.com/blog/index/0(最后的数字逐步加1)开始枚举,从每个页面中解析出博 客文章的url,直到解析出来没有文章url为止。
枚举获得博客文章的url,可以放在一个字典或者下载列表里,然后再通过多线程下载了。
一句话:获得要下载的链接,将所有的下载链接通过多线程下载。
2、尽量学会使用正则表达式。
3、如果要下载的多,务必要学会使用多线程。
1 |
import urllib2 |
相关阅读 更多 +