2011-07-24 37 views
0

我是一名GIS学生,专注于绘制非结构化数据的项目,其中我编写了一个php脚本来抓取显示美国GIS工作发布的搜索结果的以下页面,导出到xml,地理编码和地图。构建URL以显示所有刮取数据的结果

http://gisjobs.com/search_results_jobs/?action=search&listing_type%5Bequal%5D=Job&keywords%5Blike%5D=&Country%5Bmulti_like%5D%5B%5D=United+States&State%5Bmulti_like%5D%5B%5D=&City%5Blike%5D=&Salary%5Bnot_less%5D=&Salary%5Bnot_more%5D=&SalaryType%5Bmulti_like%5D%5B%5D=

然而结果页面默认为每页10个结果。您可以更改结果以在搜索后显示100个结果,足以通过刮取一页来覆盖所有结果。但是,当你改变显示100个结果,网址更改为:

http://gisjobs.com/search_results_jobs/?listings_per_page=100&restore=&page=1

这带来了从PHP调用时一个空的查询。有没有一种方法来构建URL以显示所有结果(最多100个),以便只需要刮掉一个页面?

(添加& listings_per_page = 100到第一URL的末尾不工作)

+0

现在我想到了,这实际上应该是在stackoverflow上,你可能会得到比我更好的答案。 – dkroy

回答

0

这是如何工作的:

http://gisjobs.com/search_results_jobs/?action=search&listing_type[equal]=Job&keywords[like]=&Country[multi_like][]=United+States&State[multi_like][]=&City[like]=&Salary[not_less]=&Salary[not_more]=&listings_per_page=100&SalaryType[multi_like][]=

你只需要对属性&listings_per_page=100追加到您的查询。这应该类似于其他API这样的。

看起来您可以返回的最多结果是36,除非它们具有可以指定html,json或xml的格式属性。你最好的选择是刮掉第一页,并使用下一个链接,继续爬行,直到你得到你需要的100个工作列表。