3

嗨,我正在尝试从网格中提取所有电话号码。

sancharsoft.bsnl.co.in/auction/vacant_nos/ch/gsm_choice.asp

有没有办法做到这一点

4

1 回答 1

1

真的有两个想法甚至回答这个问题,因为它似乎非常偏离主题。

我发现最简单的方法是用chrome打开页面,加载开发者工具,重新加载页面,然后寻找请求数据的POST请求,然后你可以用Curl伪造那个请求,然后从XML文件中提取数据它返回。

比从渲染网格中抓取它要容易得多。

Request URL:http://sancharsoft.bsnl.co.in/auction/vacant_nos/ch/fancy_nos_load.asp
Request Method:POST
Status Code:200 OK
Request Headersview source
Accept:application/xml, text/xml, */*; q=0.01
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Content-Length:65
Content-Type:application/x-www-form-urlencoded
Cookie:ASPSESSIONIDSARRQQBT=EALMIDLAPLDHCEKDHIOKHHFG; PHPSESSID=88mr7i6gqis9u3ece750shjsg4
Host:sancharsoft.bsnl.co.in
Origin:http://sancharsoft.bsnl.co.in
Pragma:no-cache
Referer:http://sancharsoft.bsnl.co.in/auction/vacant_nos/ch/gsm_no_choice.asp
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.101 Safari/537.11
X-Requested-With:XMLHttpRequest
Form Dataview URL encoded
_search:false
nd:1357565939966
rows:50
page:1
sidx:gsmno
sord:asc
Response Headersview source
Cache-Control:private
Content-Length:4605
Content-Type:text/xml; Charset=utf-8
Date:Mon, 07 Jan 2013 13:38:59 GMT
Server:Microsoft-IIS/7.0
X-Powered-By:ASP.NET

返回

<?xml version='1.0' encoding='utf-8'?><rows><page>1</page><total>48</total><records>2374</records><row id='9444011515'><cell><![CDATA[9444011515]]></cell><cell><![CDATA[843]]></cell></row><row id='9444018222'><cell><![CDATA[9444018222]]></cell><cell><![CDATA[843]]></cell></row><row id='9444026222'><cell><![CDATA[9444026222]]></cell><cell><![CDATA[843]]></cell></row></rows>

所以..用卷曲做到这一点..

curl -d "_search=false&nd=1357565939966&rows=50&page=1&sidx=gsmno&sord=asc" http://sancharsoft.bsnl.co.in/auction/vacant_nos/ch/fancy_nos_load.asp

如您所见,我已将确切的浏览器请求复制到 curl-d " "数据说明符中。

事实证明,是的,您实际上可以更改它,使“rows=50”变为“rows=5000”,并且您会获得预期的数据对接。 <rows><page>1</page><total>1</total><records>2368</records>

实际上,只有 2300 多行,但这个想法有效。

于 2013-01-07T13:42:15.733 回答