php - 如何将使用 DOM 抓取的链接插入 MySQL 数据库? (或者我做错了什么?)

标签 php mysql html url dom

我正在整理一个 php 脚本,该脚本使用 curl 提取 html,将其复制到新页面并保存页面名称。一切正常,但我还想收集页面上的 url 并将它们输入数据库。根据我的研究,DOM 似乎是最好的方法。但是,当我在代码中包含 DOM 时,出现“错误,插入查询失败”。 Here是我获取 DOM 代码的地方。我怀疑这是数据库问题。

DOM、PHP 和 MySQL 对我来说是新手,所以任何意见、指示或建议都会有所帮助和感激。

也非常欢迎对整体方法或替代建议提出任何意见。我并不完全相信 DOM 最适合从 html 中抓取 url。

<html>
<body>

<?
$urls=explode("\n", $_POST['url']);
$proxies=explode("\n", $_POST['proxy']);

for ( $counter = 0; $counter <= 6; $counter++) {
for ( $count = 0; $count <= 6; $count++) {

 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL,$urls[$counter]);
 curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
 curl_setopt($ch, CURLOPT_PROXY,$proxies[$count]);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'GET');
 curl_setopt ($ch, CURLOPT_HEADER, 1); 
curl_exec ($ch); 
$curl_scraped_page = curl_exec($ch); 

$FileName = rand(0,100000000000);
$FileHandle = fopen($FileName, 'w') or die("can't open file");
fwrite($FileHandle, $curl_scraped_page);


$dom = new DOMDocument();
@$dom->loadHTML($curl_scraped_page);
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("/html/body//a");

$hostname="****";
$username="****";
$password="****";
$dbname="leadturtle";
$usertable="happyturtle";

$con=mysql_connect($hostname,$username, $password) or die ("<html><script language='JavaScript'>alert('Unable to connect to database! Please try again later.'),history.go(-1)</script></html>");
mysql_select_db($dbname ,$con);



function storeLink($url) {
    $query = "INSERT INTO happyturtle (time, ad1, ad2) VALUES ('$FileName','$url', '$gathered_from')";
    mysql_query($query) or die('Error, insert query failed');
}
for ($i = 0; $i < $hrefs->length; $i++) {
    $href = $hrefs->item($i);
    $url = $href->getAttribute('href');
    storeLink($url,$target_url);

}


mysql_close($con);

fclose($FileHandle);

curl_close($ch);

echo $FileName; 

echo "<br/>";

}
}

?>

</body>
</html>

最佳答案

您没有转义 SQL 查询中的值。

如果您的字符串参数包含 ' ,它将导致语法错误(最好的情况)。 但它也可能导致源注入(inject)和大的安全漏洞(http://xkcd.com/327/:)!

首先检查您的输入。

请在您的问题中添加错误消息。

关于php - 如何将使用 DOM 抓取的链接插入 MySQL 数据库? (或者我做错了什么?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5375259/

相关文章:

php - MySQL 中数据库的最小值

php - 子页面上的 Angular 2 apache .htaccess 文件 404

c# - MySQL 返回错误的日期/时间

php - 如何插入两个单独的表并使用相同的 ID 链接它们?

html - 哪些 HTML5 标签允许 `disabled` 属性?

java - jsp中如何设置代码文本格式

php - Paypal IPN 验证拒绝访问

php - 如何在 SELECT php mysql 中对 WHERE 进行子字符串化

php - 更智能的方式来编写我的新手重复的 PHP?

html - 传单latlng到位置名称