【发布时间】:2014-05-04 18:20:41
【问题描述】:
我正在使用 PHP 和 MySQL 以及 PHP Simple HTML DOM Parser。我必须解析网站的页面并获取一些内容。为此,我将网站主页作为初始 url 并获取该页面上所有可用的锚标记。
我必须过滤这些网址,因为每个链接都对我没有用处。所以,我使用了正则表达式。所需链接必须保存到我的 mysql 数据库中。
我的问题是:
如果我提取所有链接(大约 1,20,000 个链接)并尝试保存到 mysql 数据库中,我会收到以下错误: 致命错误:第 12 行的 C:\xampp\htdocs\search-engine\index.php 中超过 60 秒的最大执行时间
我无法将数据存储到数据库中。
-
我无法过滤链接。
include('mysql_connection.php'); include('simplehtmldom_1_5/simple_html_dom.php'); $website_name="xyz.html/"; $html=file_get_html("xyz.html/"); foreach($html->find('div') as $div) { foreach($html->find('a') as $a_burrp) { echo $a1 = $a_burrp->href . '<br>'; if(preg_match('/.+?event.+/',$a1, $a_match)) { mysql_query("INSERT INTO scrap_urls(url, website_name, date_added) VALUES(`$a1`, `$website_name`, now())"; } } }
【问题讨论】:
-
mysql 已弃用,请使用 mysqli 或 PDO。您的代码容易受到 SQL 注入的攻击。您的“最大执行时间”问题之前已经被问过很多次了。
-
这是由于我们作为开发人员对服务器信息的了解有限,对于它的竞争对手来说,simpleHTMLDOM 解析器很简单但速度很慢,但由于它对所有 url 的可扩展性和可用性,它被广泛使用.我支持@wachme 回答 PHP 很慢,需要更改
-
大家好,感谢您的帮助。但是每个人都只解决了我的第一个问题,而不是第二个也是最后一个问题。我不知道将值过滤和存储到数据库中到底有什么问题。请解决这个问题。我会很感激的!
标签: php dom web-crawler