网络抓取建议/建议


Web-scraping advice/suggestions

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

当我进行搜索时,搜索详细信息不会显示在网站 URL 中。当我检查元素并查看"网络"选项卡时,请求 url 保持不变(method:post ),但是当我查看底部的Form Data部分时,我单击了查看源,并且有我的搜索详细信息在 url 形式中。

我的问题是:

如果请求 url = http://somewebsite.com/search 表单数据源 = startDate=09.07.2016&endDate=10.07.2016

如何将两者连接起来提取数据进行抓取?我是刮擦的新手,所以如果我做错了,请告诉我。

谢谢!

抓取

是一种不好的做法,但在某些情况下,这是获得某些东西的唯一方法。
如果您正在抓取某些网站,请考虑温和,不要在一天内提出 1m 个请求。

基本上你需要使用 php curl 函数和传递帖子字段

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

伦理

使用机器人获取网站内容可能对您和您正在抓取的网站有益。您可以使用数据来引用网站的内容,就像搜索引擎一样。有时,您可能希望向用户提供原始网站不提供的服务。

但是,有时刮擦用于邪恶目的。窃取内容,使用他人的计算机资源,或更糟。

目前尚不清楚您有什么意图。帮助你,可能是不道德的。我不是说是,但可能是。我不明白"AucT",说这是不好的做法,然后给出答案。这到底是怎么回事?

两个注意事项:

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

  2. 运行服务器站点,并且我注意到大量流量是由机器人引起的。这实际上是在花钱。有些网站的机器人流量多于人流量。它正在失控,我不得不投入相当多的时间来控制问题。不遵守带宽限制的机器人会被我永久阻止。当然,我允许友好的机器人。

您可以使用

简单的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);
?>