有没有办法让我的代码在另一个站点中执行某些操作并返回结果?

时间:2016-10-03 07:36:47

标签: javascript php web-scraping keyword

我需要做一件非同寻常的事情。我需要让我的网站转到另一个网站,在一些输入字段上写一些单词,搜索结果并从另一个网站获取该搜索的结果。

有什么办法吗?

2 个答案:

答案 0 :(得分:0)

如果您需要自动化工具,则必须编写脚本代码。使用PHP,您可以使用cURL。使用cURL,您可以将数据发布到表单中并根据需要获取内容。您可以发布以下数据:

curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postData);

http://php.net/manual/en/book.curl.php

答案 1 :(得分:0)

使用API​​

通常对于这样的内容,应该有一个API,用于您尝试做的事情。

如果不是这种情况,请检查以下选项并确保网站所有者允许您执行您想要执行的操作(如果您导致过多流量或者他不喜欢,您可能会被阻止网络抓取一般)

使用直接HTTP请求

网络表单基本上只是一种构建"的方式。对某个端点的HTTP请求。查看网站的HTML以了解如何创建请求:

  • 检查"操作"目标网址的表单标记的属性。
  • 通过检查表单标记的值来获取HTTP方法"方法"属性
  • 通过检查所有输入标记的名称属性来获取参数名称。

如果他们更改了网站,这些值可能会发生变化,您的计划可能会失败。

您可以使用cURL或任何其他HTTP库来执行此操作。

使用模拟网络浏览器的库

示例: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);

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