如何使用 PHP 向网页发出请求?

Posted

技术标签:

【中文标题】如何使用 PHP 向网页发出请求?【英文标题】:How to make a request to a web page with PHP? 【发布时间】:2011-10-22 11:35:33 【问题描述】:

我想要实现的是:

1st-我想查询像谷歌这样的页面,但没有手动填写它的搜索文件 第二-我想得到结果并将其保存到数据库中

我在这里看到了使用 C# 执行此操作的示例

http://www.farooqazam.net/c-sharp-auto-click-button-and-auto-fill-form/comment-page-1/#comment-27256

但是我想用php来做,你能帮我吗?

谢谢

【问题讨论】:

到目前为止你有什么? 我什么都没有,我还在寻找中 【参考方案1】:

您应该使用cURL 这样做,不仅因为它是way faster 而不是file_get_contents,还因为它具有更多功能。使用它的另一个原因是,正如 Xeoncross 在 cmets 中正确提到的那样,出于安全原因,您的虚拟主机可能会禁用 file_get_contents。

一个基本的例子是这个:

$curl_handle = curl_init();
curl_setopt( $curl_handle, CURLOPT_URL, 'http://example.com' );
curl_exec( $curl_handle ); // Execute the request
curl_close( $curl_handle );

如果需要请求返回的数据,需要指定CURLOPT_RETURNTRANSFER选项:

$curl_handle = curl_init();
curl_setopt( $curl_handle, CURLOPT_URL, 'http://example.com' );
curl_setopt( $curl_handle, CURLOPT_RETURNTRANSFER, true ); // Fetch the contents too
$html = curl_exec( $curl_handle ); // Execute the request
curl_close( $curl_handle );

有很多 cURL 选项,例如,您可以设置请求超时:

curl_setopt( $curl_handle, CURLOPT_CONNECTTIMEOUT, 2 ); // 2 second timeout

有关所有选项的参考,请参阅curl_setopt() 参考。

【讨论】:

你能举个例子吗? 这是推荐的方法。此外,一些主机禁用了file_get_contents() http 协议,因为它也不是为这种类型的东西构建的。 您甚至可以传递 cookie、标头或处理重定向。【参考方案2】:
$html = file_get_contents('http://example.com');

是您将获得的最简单的版本。

【讨论】:

【参考方案3】:
<?php
$r = new HttpRequest('http://example.com/feed.rss', HttpRequest::METH_GET);
$r->setOptions(array('lastmodified' => filemtime('local.rss')));
$r->addQueryData(array('category' => 3));
try 
    $r->send();
    if ($r->getResponseCode() == 200) 
        file_put_contents('local.rss', $r->getResponseBody());
    
 catch (HttpException $ex) 
    echo $ex;

?>

来自php manual...

【讨论】:

【参考方案4】:

您可以使用PHP CUrl,对您访问的站点进行详细操作!

您甚至可以在您访问的网站上执行获取和发布,或使用来自不同网站的服务(以防网站提供服务!)。

【讨论】:

【参考方案5】:

如果你在远程页面(谷歌)上找到你要填写的字段名(q),你可以使用GET语法来填写:

http://www.google.com/?q=hello

【讨论】:

@x3ro 这与他发布的 C# 链接有关。 OP似乎在问两个不同的问题。第一个问题是如何在不输入搜索框的情况下查询谷歌。 啊,我的错,对不起。我以为他已经想通了,现在正在寻求一种以编程方式执行此操作的方法。必须编辑答案以删除反对票;) 感谢您的帮助,C# 示例非常简单,因为我习惯使用 c#,但我是 PHP 的新手,所以我会试一试。

以上是关于如何使用 PHP 向网页发出请求?的主要内容,如果未能解决你的问题,请参考以下文章

如何发出 PHP CORS 请求?

如何检查是不是向缓存发出请求?

如何通过 iOS 设备(使用 Xcode)向 localhost 发出请求?

如何使用客户端Javascript向Ldap发出请求?

如何使用客户的 IP 地址向另一个网站发出请求?

如何使用 Angular2 向外部 API 发出 POST 请求?