Language agnostic 屏幕抓取陷阱
在屏幕抓取时,需要注意什么 这样做的灵感是:我配偶的同事让我从她癌症朋友在最后几个月里保存的博客上刮下所有的页面,这位女士想保留所有的帖子,以防博客被删除。我最终找到了一个几乎不够好的免费工具 抓取许多博客页面的一个问题是,通常会有一个导航菜单,您可以单击三角形以按年份或月份扩展帖子列表。这些小家伙创造了大量的重复内容,因为你会一次又一次地拥有相同的页面,不同的菜单组合被展开/折叠。在Blogger的例子中,我不确定这是可以避免的,因为链接都被格式化为真正的http链接,而不是明显的JavaScript调用。不过,这让我想到:Language agnostic 屏幕抓取陷阱,language-agnostic,screen-scraping,Language Agnostic,Screen Scraping,在屏幕抓取时,需要注意什么 这样做的灵感是:我配偶的同事让我从她癌症朋友在最后几个月里保存的博客上刮下所有的页面,这位女士想保留所有的帖子,以防博客被删除。我最终找到了一个几乎不够好的免费工具 抓取许多博客页面的一个问题是,通常会有一个导航菜单,您可以单击三角形以按年份或月份扩展帖子列表。这些小家伙创造了大量的重复内容,因为你会一次又一次地拥有相同的页面,不同的菜单组合被展开/折叠。在Blogger的例子中,我不确定这是可以避免的,因为链接都被格式化为真正的http链接,而不是明显的JavaSc
如果你要刮一个网站,你会补偿哪些潜在的不明显的东西?首先,我会检查RSS提要。在blogger上,如果我没记错的话,您只需将
/rss
添加到根url
然后,我会检查是否已经有一些工具来刮博客
然后,如果没有RSS提要,也没有现有的工具,我会放弃,用复制/粘贴手工完成。除非我们说的是5000页,否则那样会更快更容易。从尝试过的人那里拿走
如果您有权访问实际帐户,blogger具有导出功能
编辑:当然,你也可以试试mechanical turk。就gotchas而言。限制在某段时间内发出的请求量通常是个好主意。在短时间内粉碎一个有大量请求的站点是让您的请求被拒绝的好方法。I screen scrape很多。一些建议:
src
和alt
标记将强制alt
属性位于src
之后或相反的位置,并且为了克服这个限制,将增加正则表达式的复杂性
也可以考虑以下几点。要正确匹配
属性(在组2中捕获),需要以下正则表达式:
<\s*?img\s+?[^>]*?\s*?src\s*?=\s*?(["'])((\\?+.)*?)\1[^>]*?>
]*?\s*?src\s*?=\s*?([“'))((\ \?+)*?)\1[^>]*?>
同样,如果出现以下情况,上述操作可能会失败:
- 属性或标记名为大写,不使用i修饰符
src
属性周围不使用引号
- 然后,另一个属性
src
在其值的某处使用了>字符
- 还有一些我没有预见到的原因
因此,再次强调,不要使用正则表达式解析dom文档。除了技术方面的考虑之外,请确保不要将自己置于法律风险之中。大多数大型网站在其使用条款中都有特定的法律语言,不允许通过自动计算机程序对其服务进行编程访问,而且,显而易见美国版权问题
从技术角度来看,一定要使用DOM解析器库,这样可以节省大量的时间。许多解析器提供了将HTML读入XML结构的能力,可以使用XPath查询XML结构以准确找到所需内容。如果您知道有人可以访问该帐户,他们可以使用