编写更快的Python爬行器

编写更快的Python爬行器,python,web-crawler,Python,Web Crawler,我正在用Python编写一个爬行器来爬行一个站点。问题是,我需要检查大约250万页,所以我真的需要一些帮助来优化速度 我需要做的是检查页面的特定数量,以及是否发现记录到页面的链接。蜘蛛非常简单,它只需要对许多页面进行排序 我对Python完全陌生,但以前使用过java和C++。我还没有开始编写它,所以任何关于库或框架的建议都会很好。我们也非常感谢您提供的任何优化提示。您可以像谷歌一样使用,通过(特别是Python:and)或 传统的思路是,如果您发现程序太慢,则使用标准Python编写程序,并优

我正在用Python编写一个爬行器来爬行一个站点。问题是,我需要检查大约250万页,所以我真的需要一些帮助来优化速度

我需要做的是检查页面的特定数量,以及是否发现记录到页面的链接。蜘蛛非常简单,它只需要对许多页面进行排序

我对Python完全陌生,但以前使用过java和C++。我还没有开始编写它,所以任何关于库或框架的建议都会很好。我们也非常感谢您提供的任何优化提示。

您可以像谷歌一样使用,通过(特别是Python:and)或

传统的思路是,如果您发现程序太慢,则使用标准Python编写程序,并优化特定的慢点。您可以通过使用扩展甚至更简单的方法,降低到C来加快这些慢点


如果你只蜘蛛一个站点,考虑使用<代码> WGET -R ()。

用数百万的请求来欺骗某人的站点是不礼貌的。你可以向网站管理员索要该网站的档案吗?一旦你有了这些,你只需要简单的文本搜索。

结果存储在哪里?您可以使用的云库轻松地在服务器集群上并行执行抓取操作。

在爬网时,您会浪费大量时间等待网络请求,因此您肯定希望并行执行请求。我可能会将结果数据保存到磁盘,然后让第二个进程在文件上循环搜索术语。如果您需要额外的性能,该阶段可以轻松地分布在多台机器上。

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

  • 如果编写正则表达式是为了搜索页面中的特定模式,请尽可能地编译正则表达式并重用编译后的对象
  • 是一个html/xml解析器,可能对您的项目有一些用处

    • 亚当说的话。我曾经这样做是为了勾勒出Xanga的网络。我提高速度的方法是使用一个线程安全集,其中包含我必须查找的所有用户名。然后我有5个左右的线程同时发出请求并处理它们。你将花费比处理任何文本更多的时间等待页面被删除(很有可能),因此,只要想办法增加你可以同时收到的请求数量。

      网站不是英文的,我也不会说可以请求的语言。另外,它是一个流量非常高的图像站点(我不能真正询问的另一个原因),我只需要每个页面的html,所以希望我不会成为他们服务器上的一个消耗者。我只计划在每个页面上爬行一次,并且永远不会回来更新。wget是否只支持获取html?我不想比我必须做的更多。是的,wget上的
      -a
      标志让您指定接受的扩展,而
      -R
      让您指定拒绝的扩展。因此,您可以执行类似于
      wget-R.gif、.jpg、.png-R example.com的操作
      使用C++/C#的wget是否比Python中的等效程序更快(如果是多线程的话)?程序最慢的部分将是网络连接。每个连接至少需要100毫秒,从Python切换到C/C++只需要几毫秒。从总体上看,Python的速度将与wget一样快。+1对于wget,如果您在自己的服务器上查看自己的网站,wget实际上可能会非常快。我只有一个带有小型Raid阵列的工作站,以及一些志愿者的计算机。我只打算存储一些包含相关搜索词的页面,这些搜索词应该是越少越好的数据。如果你发现自己需要更多的计算能力(并行将大大加快你的速度),一定要试试PiCloud。修复了你文章的一些格式,希望你不介意:)欢迎使用!要加快进程,最好的办法是提高连接速度。这将是您的瓶颈,而不是Python速度。