网络抓取建议/建议

时间:2016-07-17 08:57:25

标签: php python web-scraping

这是我第一次尝试刮痧。有一个我想使用搜索功能的网站。

当我进行搜索时,搜索详细信息不会显示在网站网址中。当我检查元素并查看“网络”标签时,请求网址保持不变( method:post ),但当我查看底部时,在 { {1}} 部分,我点击了查看源,我的搜索详细信息采用网址格式。

我的问题是:

如果请求网址= Form Data 表单数据源= http://somewebsite.com/search

如何将两者连接起来进行抓取?我是新手,所以如果我这样做错了,请告诉我。

谢谢!

3 个答案:

答案 0 :(得分:1)

刮痧是不好的做法,但在某些情况下,这是获得某些东西的唯一途径 如果你正在抓一些网站,请考虑温和,不要在一天内提出100万个请求。

基本上你需要使用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',说这是不好的做法然后给出答案。这是怎么回事?

两个注释:

  1. 搜索结果比大多数其他网页需要更多资源才能生成。他们特别容易受到拒绝服务攻击。

  2. 我运行了几个站点,我注意到大量的流量是由机器人引起的。这实际上花了我钱。有些网站的机器人流量多于人群流量。它已经失去控制,我不得不投入相当多的时间来控制问题。永远不会阻止不遵守带宽限制的机器人。我当然会允许友好的机器人。

答案 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);
?>