是尝试一个巨型屏幕刮刀更好,还是将其拆分为不同站点的刮刀更好


Is it better to try for one mega screen scraper or split it into a scraper for different sites?

我将解释我的情况。

我们的社交媒体经理(yay)突然想从大约40个网站的列表中获取有关我们公司的信息,例如,列表中有很多评论网站。

(我读了很多教程和SO问题,但仍然如此)我的问题是:

  1. 有没有可能建立一个通用的刮刀,可以在所有这些网站上工作,或者我需要为每个网站单独的刮刀?

  2. 我想我知道如何解析一个单独的网页,但你是如何做到的,例如,有一个review-website.com/company-name的网站结构,页面上有标题和评论片段,然后链接到实际的整页评论?

即在多个站点上爬行和抓取多个页面。有些网站比其他网站"更容易",因为它们有像前面提到的URL这样的专用页面,但有些是论坛等,没有特定的结构,只是碰巧提到了我们的公司名称,所以我不知道如何获取这些网站的相关信息。

  1. 花在创建这些网站上的时间是否证明社交媒体经理可以自己手动搜索这些网站?特别是考虑到任何一个网站上的HTML更改都可能最终破坏scraper

我真的不认为这是一个好主意,但我的直线经理似乎认为为所有这些网站写一个刮刀需要一上午的工作,我不知道该怎么做!

更新

非常感谢你到目前为止的答案,我还想我会提供一个网站列表,只是为了澄清我认为什么是极端的任务:

Facebook - www.facebook.com

Social Mention - www.socialmention.com

Youtube - www.youtube.com

Qype - www.qype.co.uk

Money Saving Expert - www.moneysavingexpert.co.uk

Review Centre - www.reviewcentre.com

Dooyoo - www.dooyoo.co.uk

Yelp - www.yelp.co.uk

Ciao - www.ciao.co.uk

All in London - www.allinlondon.co.uk

Touch Local - www.touchlocal.com

Tipped - www.tipped.co.uk

What Clinic - www.whatclinic.com

Wahanda - www.wahanda.com

Up My Street - www.upmystreet.com

Lasik Eyes - www.lasik-eyes.co.uk/

Lasik Eyes (Forum) - forums.lasik-eyes.co.uk/default.asp

Laser Eye Surgery - www.laser-eye-surgery-review.com/

Treatment Saver - www.treatmentsaver.com/lasereyesurgery

Eye Surgery Compare - www.eyesurgerycompare.co.uk/best-uk-laser-eye-surgery-clinics

The Good Surgeon Guide - www.thegoodsurgeonguide.co.uk/

Private Health -www.privatehealth.co.uk/hospitaltreatment/find-a-treatment/laser-eye-surgery/

Laser Eye Surgery Wiki - www.lasereyesurgerywiki.co.uk

PC Advisor - www.pcadvisor.co.uk/forums/2/consumerwatch/

Scoot - www.scoot.co.uk

Cosmetic Surgery Reviews - www.cosmetic-surgery-reviews.co.uk

Lasik Reviews - www.lasikreviews.co.uk

Laser Eye Surgery Costs - www.lasereyesurgerycosts.co.uk

Who Calls Me - www.whocallsme.com

Treatment Adviser - www.treatmentadviser.com/

Complaints Board - http://www.complaintsboard.com

Toluna - http://uk.toluna.com/

Mums Net - http://www.mumsnet.com

Boards.ie - http://www.boards.ie

AV Forums - http://www.avforums.com

Magic Mum - http://www.magicmum.com

这实际上取决于你面对的网站和数据类型。

选项1:DOM/XPATH基于

如果你需要解析表和非常详细的东西,你需要用一个单独的算法解析每个网站。一种方法是将每个特定站点解析为DOM表示,并根据XPATH寻址每个值。这将需要一些时间,并且会受到结构变化的影响,如果你必须用这个刮除每个网站,你将花费超过一个上午的时间。

选项2:基于密度

然而,如果你需要解析像博客文章这样的东西,并且你可能只想提取文章的文本,那么有非常好的基于密度的算法可以在HTML结构变化的情况下工作。其中一个描述如下:https://www2.cs.kuleuven.be/cwis/research/liir/publication_files/978AriasEtAl2009.pdf

此处提供了一个实现:http://apoc.sixserv.org/code/ce_density.rb

您必须将其移植到php。对于博客和新闻网站来说,这是一种非常有效的方式。

选项3:务实

如果你不关心布局和结构,只想提供数据。您可以下载内容并尝试单独剥离标签。然而,这将在生成的文本中产生大量噪声。

更新

更新你的帖子后,你可能会按照以下顺序:

  1. 检查哪一页是非法的。在这份清单上,肯定有一些是不允许你刮的。

  2. 你将需要比一天多得多的时间。我想谈谈这一点,以及项目负责人的法律问题。

  3. 每页选择一个选项

  1. 我会为每个网站创建一个scraper,但会创建一个具有通用功能的库(例如打开页面、转换为DOM、报告错误、存储结果等)
  2. 刮擦时尽量避免使用正则表达式。一个小小的改变将停止刮擦工作。请改用网站DOM结构(XPaths?)。更加可靠
  3. 告诉你的老板这需要相当长的时间
  4. 祝你好运