【问题标题】:Structuring a URL to display all results for scraping data构造一个 URL 以显示抓取数据的所有结果
【发布时间】:2011-07-24 07:25:03
【问题描述】:

我是一名 GIS 学生,正在从事一个专注于映射非结构化数据的项目,在该项目中,我编写了一个 php 脚本来抓取显示美国 GIS 职位发布搜索结果的以下页面,以导出为 xml、地理编码和地图。

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 个结果时,URL 会更改为:

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

从 php.ini 调用时会产生一个空查询。有没有办法构建 URL 以显示所有结果(最多 100 个),以便只需要抓取一个页面?

(将 &listings_per_page=100 添加到第一个 URL 的末尾不起作用)

【问题讨论】:

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

标签: php xml web-scraping


【解决方案1】:

这是如何工作的:

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 个职位列表。

【讨论】:

    猜你喜欢
    • 2022-12-03
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    相关资源
    最近更新 更多