如何使用 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 向网页发出请求?的主要内容,如果未能解决你的问题,请参考以下文章