Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP爬虫通过整个网站_Php_Regex_Web_Fopen_Web Crawler - Fatal编程技术网

PHP爬虫通过整个网站

PHP爬虫通过整个网站,php,regex,web,fopen,web-crawler,Php,Regex,Web,Fopen,Web Crawler,我想从一个网站检索文章和其他内容。 我有了爬虫的想法,并假设我可以打开遥远的页面,并根据一些正则表达式获得文本部分。 我想知道的是,我如何不仅在单个页面(或分页)上搜索,而且在整个网站上搜索,而不必为每个元素逐个运行爬虫程序,并且在搜索过程中不忘记任何现有的url 请注意,我不需要这是干净的,因为它是一次性的事情。 我与一家网络代理公司签订了合同,该公司想向我收取一大笔费用,用于转储我自己的数据库,但没有办法,因此我必须找到一个快速的解决办法。 为了让我开始,你能给我介绍一下吗 谢谢。您可以通过

我想从一个网站检索文章和其他内容。 我有了爬虫的想法,并假设我可以打开遥远的页面,并根据一些正则表达式获得文本部分。 我想知道的是,我如何不仅在单个页面(或分页)上搜索,而且在整个网站上搜索,而不必为每个元素逐个运行爬虫程序,并且在搜索过程中不忘记任何现有的url

请注意,我不需要这是干净的,因为它是一次性的事情。 我与一家网络代理公司签订了合同,该公司想向我收取一大笔费用,用于转储我自己的数据库,但没有办法,因此我必须找到一个快速的解决办法。 为了让我开始,你能给我介绍一下吗


谢谢。

您可以通过站点地图确定站点上的页面,但这不是最可靠的解决方案,因为页面可能不在站点地图上。IMO最好的方法是使用递归函数来收集数据,从主页开始,使用正则表达式在检索到的数据上查找所有特定于站点的链接,直到抓取尽可能多的链接。这将产生蜘蛛网效应并拉取大量数据


我们目前有一个类似的实现,从一个构建糟糕的API系统中获取大约5000页的数据。

如果不逐个站点获取所有链接,就不可能不这样做。即使在使用某些第三方脚本时,它们也必须发送至少与必须发送的http请求数量相同的http请求


最简单的方法是使用wget和-r参数,它将下载整个站点,然后在下载的文件中搜索给定的正则表达式。

问题是我不需要大量数据,我需要全部数据,不遗漏任何内容,有100%的确定性幸运的是,没有真正的方法可以100%确定地获取每个页面-如果没有对文件的引用,将很难找到-尤其是自动获取!例如添加了javascript。谢谢Chris。嗯,我必须找到一种方法,或者花1000欧元来获得一个5个月的数据转储,这是我自己的财产…@Baylock:我的意思是,许多网站都有基于javascript的反垃圾邮件解决方案,PHP根本不会检测到。他们正在通过javascript创建链接/内容。wget将获取文件,我不需要文件,我需要对获取的内容进行排序和过滤(仅限文本)并将其存储在新数据库中。我已经使用了一个网站吸盘软件,但现在我又回到了原点,因为我仍然需要弄清楚如何从所有下载的文件中获取和排序数据。为了完善我的答案,我的重点是在一个新服务器上重做我的网站,因为我想离开劫持我的网络代理。因此,我的重点不是在我的桌面上检索数据,而是收集原始数据,对其进行排序、过滤,并最终为新网站重新创建一个新数据库。考虑到这一点,我认为wget没有赢家。