尝试使用一台超大屏幕刮刀或将其拆分成不同位置的刮刀更好吗?

时间:2012-01-13 10:22:41

标签: php web-crawler web-scraping

我会解释我的情况。

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

(我已经阅读了大量的教程和SO问题,但仍然)我的问题是:

  1. 是否可以构建一个适用于所有这些网站的通用刮刀,或者我是否需要为每个网站单独使用刮刀?

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

  3. 即。在多个网站上抓取并抓取多个网页。有些比其他人“更容易”,因为他们有专门的页面,如前面提到的网址,但有些是论坛等,没有特定的结构,恰好提到我们的公司名称,所以我不知道如何获得相关信息。

    1. 创建此文件的时间是否足以证明社交媒体经理可以自己手动搜索这些网站?特别是考虑到任何网站上的HTML更改都可能最终破坏刮刀?
    2. 我真的不认为这是一个好主意但我的直线经理似乎认为为所有这些网站写一个刮刀需要一个早上的工作,我不知道该怎么做!

      更新

      非常感谢您到目前为止的答案,我还认为我会提供一个网站列表,以澄清我认为是一项极端任务:

      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

2 个答案:

答案 0 :(得分:1)

这真的取决于你所面对的网站和数据。

选项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 :(得分:0)

  1. 我会为每个网站创建一个刮刀,但会创建一个具有常用功能的库(例如,打开一个页面,转换为DOM,报告错误,存储结果等)
  2. 尝试在抓取时避免使用正则表达式。一个小的改变将停止刮削工作。改为使用网站DOM结构(XPaths?)。更可靠。
  3. 告诉你的老板需要花费很多时间。
  4. 祝你好运。