如何知道被刮的网站是否已经改变?

Yet*_*eti 6 php screen-scraping web-scraping

我正在使用PHP来抓取网站并收集一些数据.这一切都是在不使用正则表达式的情况下完成的.我正在使用php的explode()方法来查找特定的HTML标签.

如果网站的结构发生变化(CSS,HTML),则刮刀可能会收集错误的数据.所以问题是 - 我如何知道HTML结构是否已经改变?如何在将任何数据存储到我的数据库之前识别它,以避免存储错误的数据.

sys*_*out 7

如果您正在抓取内容发生变化的页面,我认为您没有任何干净的解决方案.

我已经开发了几个python scraper,我知道当网站对其布局进行微妙的改变时,怎么会令人沮丧.

你可以尝试一个机械化的解决方案(不知道php对应物),如果你很幸运,你可以隔离你需要提取的内容(链接?).

另一种可能的方法是编码一些约束并在存储到db之前检查它们.

例如,如果您要抓取Url,则需要验证刮刀所解析的内容是否正式为有效的Url; 对于整数ID或您想要刮除的任何内容都可以被识别为有效.

如果您正在抓取纯文本,则检查起来会更加困难.


Ski*_*izz 5

取决于站点,但您可以计算抓取页面中的页面元素数量,例如 div、class 和 style 标签,然后通过将这些总数与后来抓取的总数进行比较来检测页面结构是否已更改。

CSS 文件可以使用类似的过程,其中可以使用简单的正则表达式提取每个类或 ID 的名称,并根据需要进行存储和检查。如果此列表有新的添加,那么页面结构几乎肯定已在被抓取的网站上的某个位置发生了变化。