我想存储:
在我的名为products_data的表中,其filds名称为PID,product_name,category,subcategory,product_price和product_company。
我在php中使用curl_init()
函数首先废弃网站网址,接下来我想将产品数据存储在我的数据库表中。以下是我迄今为止所做的事情:
$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());
}
}
我对如何在表中插入数据的数据库部分感到困惑。有什么帮助吗?
答案 0 :(得分:8)
在编写代码之前,您可能希望在设计阶段考虑许多事项:
mysql_real_escape_string
。抓取时,请记住:
sleep
过度的情况下保持性能的一种方法是在循环的基础上交错您希望进行的请求。因此,在50个站点上执行一个HTTP操作,保留每个scrape的状态,然后返回到第一个。multi_curl
来并行化HTTP请求。出于上述原因,我不建议在单个站点上使用此功能(远程服务器可能会限制您可以单独打开它们的连接数量。)此外,安装第三方抓取软件或获取第三方服务为您进行抓取可能会产生成本效益。我自己在这个领域的研究很少见到看似有能力的组织(并且记住,在撰写本文时,我没有尝试过任何一种组织)。所以,你可能希望看看这些: