0

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

我想使用 curl 和 php 编写一个脚本,该脚本转到此链接:http ://tools.cisco.com/WWChannels/LOCATR/openBasicSearch.do然后遍历每个国家/地区的每个页面,捕获每个合作伙伴的列表国家并将其保存到数据库。

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

问题是在我们选择任何国家之前 url 是:: http://tools.cisco.com/WWChannels/LOCATR/BasicSearch.do 在我们选择国家之后说'india' url 是: http://tools.cisco.com/ WWChannels/LOCATR/performBasicSearch.do,没有提到任何选择的国家。

我的想法是遍历 HTML 页面,并在数组中输入所有国家/地区,然后创建一个递归函数来调用具有特定国家/地区的页面,但为此我们需要在递归函数中为每个国家/地区提供不同的 URL,对吗?

请帮忙

4

2 回答 2

2

您的网址搞砸了,所以我看不到您正在谈论的确切页面,但是最有可能发生的是,当您更改国家/地区时,网站正在POST使用变量country(尽管它可能是其他东西)与您选择的国家名称/国家 ID 的值。如果您在页面上查看源代码,您将能够看到正在传递的输入字段的名称。完成此操作后,在发出 cURL 请求时,您可以设置 的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 才能自己找出答案。

于 2009-04-21T02:38:10.843 回答
1

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

于 2009-07-12T15:10:50.450 回答