gpt4 book ai didi

language-agnostic - 屏幕抓取问题

转载 作者:行者123 更新时间:2023-12-03 18:17:06 25 4
gpt4 key购买 nike

屏幕抓取时,需要注意哪些“陷阱”?

这样做的灵感是:我配偶的同事让我从 Blogger 主持的博客中抓取所有页面,该博客是她患癌症的 friend 在她最后几个月保留的,这位女士想保留所有帖子,以防该博客永远存在删除。我最终找到了一个勉强够用的免费工具。

抓取许多 Blogger 页面的一个问题是,通常会有一个导航菜单,您可以在其中单击三角形以按年或月展开帖子列表。这些小家伙创造了大量的重复内容,因为您会一遍又一遍地使用相同的页面,同时展开/折叠菜单的不同组合。在 Blogger 的情况下,我不确定这是否可以避免,因为链接都被格式化为真正的 http 链接,而不是明显的 JavaScript 调用。尽管如此,它让我想到:

如果你要抓取一个网站,你会补偿哪些潜在的不明显的东西?

最佳答案

不要使用正则表达式来刮

虽然正则表达式适用于多种任务,但我发现它在解析 HTML DOM 时通常会达不到要求。 HTML 的问题在于文档的结构如此多变,以至于很难准确地(准确地说,我的意思是 100% 成功率且没有误报)提取标签。

我建议您使用 DOM 解析器,例如 BeautifulSoup 或等效物(PHP 中的 SimpleHTMLDom)。

有些人可能认为这有点矫枉过正,但最终,它会更容易维护并允许更多的可扩展性。

可以设计正则表达式来实现相同的目标,但会受到限制。例如,开发一个正则表达式来获得 srcalt标签会强制 alt属性在 src 之后或者相反,克服这个限制会增加正则表达式的复杂性。

另外,请考虑以下事项。正确匹配 <img>使用正则表达式标记并仅获取 src属性(在第 2 组中捕获),您需要以下正则表达式:

<\s*?img\s+?[^>]*?\s*?src\s*?=\s*?(["'])((\\?+.)*?)\1[^>]*?>

再说一次,如果出现以下情况,上述操作可能会失败:
  • 属性或标记名称以大写字母表示,并且不使用 i 修饰符。
  • src周围不使用引号属性。
  • 另一个属性然后 src在其值的某处使用 > 字符。
  • 其他一些我没有预见到的原因。

  • 所以再次强调,不要使用正则表达式来解析 dom 文档。

    关于language-agnostic - 屏幕抓取问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1197884/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com