这是我第一次尝试刮痧。有一个我想使用搜索功能的网站。
当我进行搜索时,搜索详细信息不会显示在网站网址中。当我检查元素并查看“网络”标签时,请求网址保持不变( method:post
),但当我查看底部时,在 { {1}} 部分,我点击了查看源,我的搜索详细信息采用网址格式。
我的问题是:
如果请求网址= Form Data
和表单数据源= http://somewebsite.com/search
如何将两者连接起来进行抓取?我是新手,所以如果我这样做错了,请告诉我。
谢谢!
答案 0 :(得分:1)
基本上你需要使用php curl fucntion并传递帖子字段
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://example.com/search");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('postvar1'=>'value1')));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec ($ch);
curl_close ($ch);
答案 1 :(得分:1)
使用机器人获取网站内容可能对您和您正在抓取的网站有益。您可以使用数据来引用网站的内容,就像搜索引擎一样。有时您可能希望向原始网站不提供的用户提供服务。
然而,有时刮痧被用于恶意目的。窃取内容,使用他人的计算机资源,或者更糟。
目前尚不清楚你有什么意图。帮助你,可能是不道德的。我不是说它,但可能是。我不明白'AucT',说这是不好的做法然后给出答案。这是怎么回事?
两个注释:
搜索结果比大多数其他网页需要更多资源才能生成。他们特别容易受到拒绝服务攻击。
我运行了几个站点,我注意到大量的流量是由机器人引起的。这实际上花了我钱。有些网站的机器人流量多于人群流量。它已经失去控制,我不得不投入相当多的时间来控制问题。永远不会阻止不遵守带宽限制的机器人。我当然会允许友好的机器人。
答案 2 :(得分:1)
您可以使用简单的html dom http://simplehtmldom.sourceforge.net/
<?php
include_once("simple_html_dom.php");
$request = array(
'http' => array(
'method' => 'POST',
'content' => http_build_query(array(
'startDate' => '09.07.2016',
'endDate' => '10.07.2016'
)),
)
);
$url = "http://somewebsite.com/search";
$context = stream_context_create($request);
$html = file_get_html($url, false, $context);
?>