【问题标题】:Pros and Cons of Python Web Scraping using BeautifulSoup vs XPath [closed]使用 BeautifulSoup 与 XPath 进行 Python Web Scraping 的优缺点 [关闭]
【发布时间】:2015-12-30 22:41:06
【问题描述】:

我最近一直在学习在 Python 中使用 BeautifulSoup 进行网页抓取,但今天早些时候有人建议我考虑使用 XPath 表达式。

XPath 和 BeautifulSoup 的工作方式有何不同?

【问题讨论】:

  • 这完全是基于意见的
  • 我正试图弄清楚我使用其中一个而不是另一个的好处。肯定有人说“BS 是我使用的,因为我认为总体而言它更好”与我实际要求的是“使用 XPath 的有益特性将是......”之间存在差异。
  • 两者都推荐了不同的方法,而后一个答案也自相矛盾,说 话虽如此,我发现编写 bs4 sn-p 通常比编写相应的 lxml 更容易。 所以即使他们实际上也无法完全决定哪个更好。您认为哪一个比另一个更好?速度、易用性、代码可读性或您定义最佳的标准是什么?
  • 在我的问题中,我没有问哪个更好。如果您通读它,我实际上只要求了解它们之间的差异以及每个选项的优缺点。我的问题鼓励矛盾,我不是在寻找一个或另一个统一的优势。更重要的是,我认为这个问题的答案不仅对我自己有益(因为他们已经这样做了),而且对我未来处于我境况的其他人也有益。

标签: python xpath web-scraping beautifulsoup


【解决方案1】:

我使用过 BeautifulSoup 和 lxml,并且根据经验倾向于使用 lxml。见performance comparison here。使用 BeautifulSoup 时要注意的一件事是显式选择解析器。为您选择的默认解析器可能会错误地解析结果,而不会发出可能导致噩梦的警告 - my experience here

话虽如此,我发现写一个 bs4 sn-p 通常比写相应的 lxml 更容易。

【讨论】:

    【解决方案2】:

    我建议使用 bs4,它的用法和文档更友好,可以节省您的时间并增加信心,这在您自学字符串操作时非常重要。

    但在实践中,它需要强大的 CPU。我曾经在我的 1core VPS 上使用不超过 30 个连接进行刮擦,并且 python 进程的 CPU 使用率保持在 100%。这可能是由于实施不当造成的,但后来我全部重新编译,性能问题就消失了。

    至于性能,regex > lxml >> bs4.至于把事情做好,没有区别。

    【讨论】:

      猜你喜欢
      • 2018-04-02
      • 1970-01-01
      • 2020-08-18
      • 1970-01-01
      • 2012-11-06
      • 2021-09-03
      • 2018-02-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多