Php Curl函数从选择框中选择选项并自动提交

Php Curl函数从选择框中选择选项并自动提交,php,curl,screen-scraping,Php,Curl,Screen Scraping,我是一个新手,每天都尝试不同的事情,当我遇到困难的时候总是来这里 我想使用curl和php编写一个脚本,它指向这个链接:然后遍历每个国家的每个页面,捕获每个国家的每个合作伙伴的列表,并将其保存到数据库中 我不知道脚本将如何从选择框中逐个选择国家,并将页面重定向到国家页面…这是第一件要做的事情,一旦我们进入页面,模式匹配将在数据库中存储名称和地址,我可以管理 问题是,在选择任何国家/地区url之前: 在我们选择国家后,比如说“印度”的url是:,就没有对所选国家的引用 我的想法是遍历HTML页面,

我是一个新手,每天都尝试不同的事情,当我遇到困难的时候总是来这里

我想使用curl和php编写一个脚本,它指向这个链接:然后遍历每个国家的每个页面,捕获每个国家的每个合作伙伴的列表,并将其保存到数据库中

我不知道脚本将如何从选择框中逐个选择国家,并将页面重定向到国家页面…这是第一件要做的事情,一旦我们进入页面,模式匹配将在数据库中存储名称和地址,我可以管理

问题是,在选择任何国家/地区url之前: 在我们选择国家后,比如说“印度”的url是:,就没有对所选国家的引用

我的想法是遍历HTML页面,在数组中输入所有国家,然后使用递归函数调用具有特定国家的页面,但为此,我们需要递归函数中每个国家的URL有所不同,对吗


请帮助

您的url乱七八糟,因此我看不到您所说的确切页面,但最可能发生的情况是,当您更改国家/地区时,网站正在向同一页面发出
POST
请求 使用带有所选国家/地区名称/国家/地区id值的变量,如
country
(尽管可能是其他变量)。如果您在页面上查看Source,您将能够看到正在传递的输入字段的名称。一旦这样做,在发出cURL请求时,可以设置
CURLOPT_POSTFIELDS
,如下所示:

要在HTTP“post”操作中发布的完整数据。若要发布文件,请在文件名前加@并使用完整路径。这可以作为urlencoded字符串(如“para1=val1¶2=val2&…”)传递,也可以作为以字段名为键、字段数据为值的数组传递

因此,请记住,您可以这样做:

$ch = curl_init('http://tools.cisco.com/WWChannels/LO...BasicSearch.do');
$ch = curl_setopt($ch, CURLOPT_POSTFIELDS, array('country' => 'India'));
$ch = curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$contents = curl_exec($ch);
curl_close($ch);

不过,正如我所说,这个国家=>印度部分是一个有根据的猜测,关于这个领域可能会经过什么。你必须检查HTML来自己找出答案。

你的url是乱七八糟的,所以我看不到你所说的确切页面,但是最可能发生的情况是,当你改变国家时,网站正在向同一页面发出
POST
请求 使用带有所选国家/地区名称/国家/地区id值的变量,如
country
(尽管可能是其他变量)。如果您在页面上查看Source,您将能够看到正在传递的输入字段的名称。一旦这样做,在发出cURL请求时,可以设置
CURLOPT_POSTFIELDS
,如下所示:

要在HTTP“post”操作中发布的完整数据。若要发布文件,请在文件名前加@并使用完整路径。这可以作为urlencoded字符串(如“para1=val1¶2=val2&…”)传递,也可以作为以字段名为键、字段数据为值的数组传递

因此,请记住,您可以这样做:

$ch = curl_init('http://tools.cisco.com/WWChannels/LO...BasicSearch.do');
$ch = curl_setopt($ch, CURLOPT_POSTFIELDS, array('country' => 'India'));
$ch = curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$contents = curl_exec($ch);
curl_close($ch);

不过,正如我所说,这个国家=>印度部分是一个有根据的猜测,关于这个领域可能会经过什么。您必须检查HTML才能自己找到答案。

对于自动化/抓取,我建议您使用虚拟浏览器,例如。它是SimpleTest的一部分,但是您可以自己使用它。

对于自动化/刮取,我建议您使用虚拟浏览器,例如。它是SimpleTest的一部分,但是您可以自己使用它