Aas*_*shi -2 php curl web-scraping
我想存储:
在我的名为products_data的表中,其filds名称为PID,product_name,category,subcategory,product_price和product_company.
我curl_init()在php中使用函数首先废弃网站URL,接下来我想将产品数据存储在我的数据库表中.以下是我迄今为止所做的事情:
$sites[0] = 'http://www.babyoye.com/';
foreach ($sites as $site)
{
$ch = curl_init($site);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$html = curl_exec($ch);
$title_start = '<div class="info">';
$parts = explode($title_start,$html);
foreach($parts as $part){
$link = explode('<a href="/d/', $part);
$link = explode('">', $link[1]);
$url = 'http://www.babyoye.com/d/'.$link[0];
// now for the title we need to follow a similar process:
$title = explode('<h2>', $part);
$title = explode('</h2>', $title[1]);
$title = strip_tags($title[0]);
// INSERT DB CODE HERE e.g.
$db_conn = mysql_connect('localhost', 'root', '') or die('error');
mysql_select_db('babyoye', $db_conn) or die(mysql_error());
$sql = "INSERT INTO products_data(PID, product_name) VALUES ('".$url."', '".$title."')"
mysql_query($sql) or die(mysql_error());
}
}
Run Code Online (Sandbox Code Playgroud)
我对数据库部分很困惑,如何在表中插入数据.有帮助吗?
在编写代码之前,您可能希望在设计阶段考虑许多事项:
mysql_real_escape_string.爬行时,请记住:
sleep是在循环的基础上交错您希望进行的请求.因此,在50个站点上执行一个HTTP操作,保留每个scrape的状态,然后返回到第一个.multi_curl并行化HTTP请求.出于上述原因,我不建议在单个站点上使用它(远程服务器可能会限制您可以单独打开它们的连接数).此外,安装第三方抓取软件或获取第三方服务为您进行抓取可能会产生成本效益.我自己在这个领域的研究很少见到看似有能力的组织(并且记住,在撰写本文时,我没有尝试过任何一种组织).所以,你可能希望看看这些: