是否有办法使我的代码在另一个网站做一些动作,并返回结果

Is there way to make my code to do some actions in another site and return the results?

本文关键字:结果 返回 网站 我的 另一个 代码 是否      更新时间:2023-09-26

我需要做一件不寻常的事。我需要让我的网站去另一个网站,写一些字在一些输入字段,搜索结果,并得到从另一个网站的搜索结果。

有办法吗?

如果您需要自动化工具,那么您必须编写脚本。对于PHP,您可以使用cURL。使用cURL,您可以将数据发布到表单中并获得所需的内容。您可以这样发布数据:

curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postData);
http://php.net/manual/en/book.curl.php

使用API

通常像这样的东西应该有一个API来做你想做的事情。

如果不是这样的话,请检查以下选项,并确保网站的所有者允许你做你想做的事情(或者如果你造成太多的流量,你可能会被阻止,或者他一般不喜欢网页抓取)

使用直接HTTP请求

web表单基本上只是一种"构建"到某个端点的HTTP请求的方式。查看网站的HTML,找出请求是如何创建的:
  • 为目标url检查表单标签的"action"属性。
  • 通过检查表单标签的"method"属性的值来获取HTTP方法
  • 通过检查所有输入标签的名称属性获取参数名称

如果他们改变他们的网站,这些值可能会改变,你的程序可能会失败。

你可以使用cURL或任何其他HTTP库来实现。

使用模拟web浏览器的库

示例:Symfony Browser-Kit

我不想提供如何使用它的完整手册,因为链接页面上的文档非常好。但是从那一页中摘取的一个例子:

use Acme'Client; // Make sure to create this class as described in the documentation
// make a real request to an external site
$client = new Client();
$crawler = $client->request('GET', 'https://github.com/login');
// select the form and fill in some values
$form = $crawler->selectButton('Log in')->form();
$form['login'] = 'symfonyfan';
$form['password'] = 'anypass';
// submit that form
$crawler = $client->submit($form);

如果他们改变他们的网站,这也可能失败,这取决于他们所做的改变。您需要相应地更新您的程序