【问题标题】:Web Crawler Issue in PHPPHP 中的网络爬虫问题
【发布时间】:2019-03-26 10:13:49
【问题描述】:

此应用程序将充当搜索引擎,从不同(至少 200 个)学术机构(包括大学、学院和其他培训机构)中提取与教师相关的信息。这包括教师姓名、最高资格、专业领域、专业类型(教学、研究、辅导等)、经验(以年为单位)和隶属关系,并将它们存储在数据库中。

我要从200个网站获取数据,也就是说每个网站都有自己的标签和其他东西,每个网站的正则表达式都不一样,我该怎么做,有人可以帮忙吗?

【问题讨论】:

  • 到目前为止你有什么尝试?
  • 非常感谢您的回答,我就是这样做的。
  • $regexp = '!(.* ?)!'; preg_match_all($regexp, $name_url, $name); $f_name = $name[1];返回 $f_name;
  • 但是如你所知,每次正则表达式都会改变,我该如何操作这个东西?
  • 这是网页抓取,不是网页抓取。如果每个站点都不相同,您将不得不为每个站点编写自定义代码。另外,您是否获得了 200 家机构的书面许可?你需要它,否则,它是违法的,受版权保护。

标签: javascript php regex oop


【解决方案1】:

您需要使用无头浏览器进行网络抓取。我推荐这个工具https://github.com/facebook/php-webdriver

为了能够抓取许多网站,您需要实现许多不同的抓取工具,每个网站一个,一旦每个网站都有自己的 html 结构。

问候。

【讨论】:

  • 非常感谢您的回答,问题是我必须编写自定义代码,我不能使用任何类型的库。
  • 为网络爬取创建自定义工具并不适用于每个网站,因为有些网站需要 javascript 交互,它会迫使您使用无头浏览器来模拟客户端浏览。我认为您自己将达到的最大程度只是使用自定义正则表达式数据收集信息并手动解析 DOM。至少什么都不会花费你太多的时间。想得更好。
  • 先生,非常感谢,这真的很有帮助,实际上问题是,我们正在与一家有一些限制的公司合作。所以我必须关注他们,除了使用库之外还有其他可能吗,你认为它可能有。可能对我有帮助。
  • 你可以阅读Dom Crawler github.com/symfony/dom-crawler的源代码,它只使用纯PHP。
  • 好的,非常感谢先生,这对我很有帮助。
最近更新 更多