逆向工程:每页搜索结果上arrow.com

问题描述:

我试图增加每页的结果,例如,当你打开: http://components.arrow.com/part/search/BAV99逆向工程:每页搜索结果上arrow.com

网站为您提供了从显示选择10,25,50或选项100通过点击链接50.现在我的问题是,我将如何显示99999结果与卷曲例如。

你的目标,http://components.arrow.com/part/search/BAV99页面,使用的形式提供服务器用来确定多少条记录返回POST数据,什么起始偏移使用分页,应该如何排序等。

由于@EvanLarsen在his answer中指出,您需要使用curl -d "<POST_DATA>" <URL>

但是,看起来该网站会正确回应一个请求,并且只会提供您实际关心的那些字段。

只返回第一个记录:

curl -d "limit=1" http://components.arrow.com/part/search/BAV99 

只返回第二个记录:

curl -d "limit=1&start=1" http://components.arrow.com/part/search/BAV99 

要返回99999个记录(如你问):

curl -d "limit=99999" http://components.arrow.com/part/search/BAV99 

如果你需要一个体面的用户界面来修改和提交POST数据和查看结果更容易在Web浏览器(而不是usi ng curl),请查看Request Maker Chrome Extension

+0

无论'卷曲 - d“限制= 99999”http:// components.arrow.com/part/search/BAV99“,也不会使用带有限制= 99999的请求设备Chrome扩展程序将返回超过10页的结果。 –

+0

显然(基于我的试验和错误),当限制设置为高于4000并返回“未找到搜索结果”时,他们限制结果。但是在limit = 4000或更低的情况下,它会为我返回所有143个结果。 –

我用Fiddler2想出下面的HTTP请求,看起来好像它将所有143个匹配项返回到一个页面。我通过观看从下拉列表中选择“100结果”时发送的HTTP请求来完成此操作。然后,我复制了原始请求,将其粘贴到Fiddler2的RequestBuilder中,更改了limit=200,并执行了它。我将WebView中的响应与网站上显示的实际页面进行了比较。

POST http://components.arrow.com/part/search/BAV99 HTTP/1.1 
Host: components.arrow.com 
Proxy-Connection: keep-alive 
Referer: http://components.arrow.com/part/search/BAV99 
Content-Length: 331 
Cache-Control: max-age=0 
Origin: http://components.arrow.com 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30 
Content-Type: application/x-www-form-urlencoded 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Encoding: gzip,deflate,sdch 
Accept-Language: en-US,en;q=0.8 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 
Cookie: __utmz=199791230.1309618262.1.1.utmcsr=*.com|utmccn=(referral)|utmcmd=referral|utmcct=/questions/5359805/problem-while-parsing-html-xml-and-quering-with-xpath; __utma=199791230.901122760.1309618262.1309618262.1309618262.1; region=na; lang=en; JSESSIONID=s4CyTyHKHbwhJc2v1xXyv50s3mvshZmZJJzGYQNjpmHnw2MmcgyT!1070203391 

sort1Name=&sort1Order=&start=0&docid=&cat=&filtMultiSelect=&catFiltAddOn=&chkButton=1&search_token=BAV99&limit=200&requestedURL=http%3A%2F%2Fext.partsearch.arrow.com%2Fnacpartservice%2Fsearch%3Fappid%3Dnac%26cc%3DUS%26cn%3DARROW%2FAMERICAS%26lang%3Den%26retfilt%3DY%26retreq%3DY%26srchtxt%3DBAV99%26start%3D0%26limit%3D10&taxonomy= 

试试这个:

curl -d "sort1Name=&sort1Order=&start=0&docid=&cat=&filtMultiSelect=&catFiltAddOn=&chkButton=1&search_token=BAV99&limit=9999&requestedURL=http%3A%2F%2Fext.partsearch.arrow.com%2Fnacpartservice%2Fsearch%3Fappid%3Dnac%26cc%3DUS%26cn%3DARROW%2FAMERICAS%26lang%3Den%26retfilt%3DY%26retreq%3DY%26srchtxt%3DBAV99%26start%3D0%26limit%3D10&taxonomy=" http://components.arrow.com/part/search/BAV99 

这是通过使用Chrome开发人员工具(或萤火虫)完成:

enter image description here

但正如其他人所说,服务器被限制这个参数,所以你不能发送9999