是否有办法使我的代码在另一个网站做一些动作,并返回结果
Is there way to make my code to do some actions in another site and return the results?
我需要做一件不寻常的事。我需要让我的网站去另一个网站,写一些字在一些输入字段,搜索结果,并得到从另一个网站的搜索结果。
有办法吗?
如果您需要自动化工具,那么您必须编写脚本。对于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);
如果他们改变他们的网站,这也可能失败,这取决于他们所做的改变。您需要相应地更新您的程序
相关文章:
- 是否可以将JXBrowser显示的JS确认对话框的结果返回到调用它的JS部分
- 将字符串结果返回到表单元格中的新行中
- 如何从批处理文件调用一个带有2个参数的java脚本函数,并将结果返回到环境变量
- 使用 JSON 和 ExtJS 将 MPDF 结果返回给浏览器
- 将信息结果返回到多个输入字段
- 如何将变量从javascript发送到php并将结果返回给JS
- 将 JavaScript 变量传递给 PHP,并将 PHP 结果返回给 JavaScript 变量
- 当没有结果返回 JavaScript 搜索时显示消息
- 加载相同的结果返回按钮
- 如果搜索框位于_SiteLayout页(在页眉 DIV 中),如何将搜索结果返回给用户
- MVC C#中的自定义操作结果返回特定视图
- 使用javascript/lodash对特定键的相同值进行分组,并对其进行计数,然后将结果返回到数组
- 如何使用javascript将循环结果返回到列中
- 结果返回为“未定义”
- 搜索未检测到结果返回-Selectize.js
- 调用一个打开活动并将活动结果返回给javascript的java函数
- 将PHP结果返回到原始html页面
- ASP.. NET MVC控制器结果返回到视图
- 如何通过AJAX传递值来更改SQL搜索查询并将结果返回给HTML ?
- Asp.net MVC或javascript将另一个页面的结果返回给方法