从可能使用会话ID的安全URL抓取页面
如何抓取像这样的页面:https://www.procom.ca/JobList.aspx?keywords=&Cities=&reference=&JobType=0
这个页面是安全的,看起来需要一个来源网址。我用wget或者httplib2都无法获取任何内容。
如果你在浏览器中打开这个页面,你会看到一个列表,但在命令行中却无法获取到。 https://www.procom.ca/jobsearch.aspx
我对在命令行中获取数据感兴趣。
2 个回答
0
你在发送POST或GET请求时,具体发送了哪些数据呢?我建议你可以通过Firebug的网络面板查看一下POST/GET消息。在那个页面上,有很多隐藏的值,我觉得这些值是和时间有关的,每次加载页面时可能都会变化,而且可能只在某次有效。所以你可以先加载页面,获取这些值,然后再通过POST消息发送它们。例如,看看这些:
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTEwODIzNjMxMzEPFgIeEUdyaWRTb3J0RGlyZWN0aW9uCyo..." />
3
正如你所猜测的,这个操作需要一个来源地址(referer)。下面的代码可以正常工作:
import urllib2
urlopen = urllib2.urlopen
Request = urllib2.Request
url = 'https://www.procom.ca/JobList.aspx?keywords=&Cities=&reference=&JobType=0'
headers = {'Referer' : 'http://www.stackoverflow.com'}
req = Request(url, None, headers)
handle = urlopen(req)
print handle.read()