编写更快的Python Spider

MMa*_*Mag 6 python web-crawler

我正在用Python写一个蜘蛛来抓取一个网站.麻烦的是,我需要检查大约250万页,所以我真的可以使用一些帮助使其优化速度.

我需要做的是检查一定数量的页面,如果发现它记录了页面的链接.蜘蛛非常简单,只需要对很多页面进行排序.

我是Python的新手,但之前使用过Java和C++.我还没有开始编码,因此任何有关库或框架的建议都会很棒.任何优化技巧也非常感谢.

Joh*_*ett 10

你可以像谷歌一样使用MapReduce,通过Hadoop(特别是Python:12),DiscoHappy.

传统思路是用标准Python编写程序,如果发现它太慢,可以对其进行分析,并优化特定的慢点.你可以通过使用C/C++扩展甚至是ctypes降低到C来加快这些慢点.

如果您只是一个站点,请考虑使用wget -r(示例).

  • 是的,wget上的`-A`标志让你指定接受的扩展名,而`-R`让你指定被拒绝的扩展名.所以你可以做一些像`wget -R.gif,.jpg,.png -r example.com`这样的事情 (2认同)
  • 程序中最慢的部分是网络连接.每个连接至少要100ms,从Python切换到C/C++只需要几毫秒.在宏观方案中,Python将同样快速. (2认同)

Bra*_*ore 5

你在哪里存储结果?您可以使用PiCloud的云库在一组服务器上轻松地并行化您的抓取.


sat*_*oru 5

由于您是Python的新手,我认为以下内容可能对您有所帮助:)

  • 如果你正在编写正则表达式来搜索页面中的某个模式,请在任何地方编译你的正则表达式并重用编译对象
  • BeautifulSoup是一个html/xml解析器,可能对您的项目有一些用处.