【发布时间】:2023-03-08 17:30:01
【问题描述】:
我正在处理search page 的场景。
这个搜索页面必须同时对以下5个搜索引擎进行API调用:
- http://www.kijiji.ca/
- http://www.lespac.com/
- http://www.autonet.ca/
- http://www.autotrader.ca/
- http://www.carpages.ca/
这个想法是从所有 5 个 API 调用中收集数据,并将其存储并呈现给用户以获取匹配的数据。
我只举一个搜索引擎 API 调用的例子,比如说“KIJIJI”。
示例网址: http://www.kijiji.ca/b-autos-camions/grand-{CITY}/autre+type+de+carrosserie__berline__bicorps__cabriolet__coupe__familiale-{MAKE}-{MODEL}-{MIN YEAR}__/c174l80002a138a54a1000054a68?price=__{Max Price}&kilometres=__{MAX KM}
令牌 {CITY}、{MAKE} 等将替换为用户输入的搜索值。
使用真实值搜索 URL:
http://www.kijiji.ca/b-autos-camions/grand-montreal/autre+type+de+carrosserie__berline__bicorps__cabriolet__coupe__familiale-Honda-Accord-2010__/c174l80002a138a54a1000054a68?price=__5000&kilometres=__13000
页面提取器网址:
https://api.import.io/store/data/7ddb89d9-1dba-464f-a8e1-d522b50e8c4c/_query?input/webpage/url=http://www.kijiji.ca/b-autos-camions/grand-montreal/autre+type+de+carrosserie__berline__bicorps__cabriolet__coupe__familiale-Honda-Accord-2010__/c174l80002a138a54a1000054a68?price=__5000&kilometres=__13000&_user=8df097bf-2f5d-4509-b13e-299d05bad826&_apikey=H76otVMlVTG2KIW9fCZjWPtf4KzWFmlNBzbD2WIy9qOKSwIPgGxmUFVmTV9dDrORwcTtMBS1zZVLXSdEd9yfPQ%3D%3D
基本上,搜索 URL 进入页面提取器 URL 以获取所有找到结果的列表。 api 调用将大量 url 返回到页面。
个人结果提取器:
https://api.import.io/store/data/e51c6ba5-fbf0-4614-b6a1-4d522b6b6ecf/_query?input/webpage/url=http://www.kijiji.ca/v-autos-camions/laval-rive-nord/2013-honda-accord-sport-sedan/1062203732?siteLocale=en_CA&_user=8df097bf-2f5d-4509-b13e-299d05bad826&_apikey=H76otVMlVTG2KIW9fCZjWPtf4KzWFmlNBzbD2WIy9qOKSwIPgGxmUFVmTV9dDrORwcTtMBS1zZVLXSdEd9yfPQ%3D%3D
第二个 api 调用返回每个单独 URL 的信息。
您可以通过将示例、页面提取器和单个结果提取器复制并粘贴到浏览器中来进行实时测试。确实返回 json 结果。
现在的事情是我必须调用所有上述 5 个搜索引擎来进行单个搜索查询。我有每个搜索引擎的 api url。
请看下图。
如何通过为单个搜索查询调用多个 api 调用来实现这一点?它是否涉及多线程?
【问题讨论】:
标签: php multithreading api web-scraping