如何使用python获取重定向的URL? (CURLOPT_FOLLOWLOCATION无效)

时间:2015-04-13 13:16:07

标签: php curl web-crawler

我正致力于从网站抓取信息:http://www.fatwallet.com
有许多重定向的URL。例如:http://www.fatwallet.com/ticket/store/A4C?s=storepage
被重定向到http://www.a4c.com/?siteID=.7WaaTN6umc-s1Ih0x_Q67n6r7gInoh6Ug

我想使用PHP找出重定向的网址 我用过" curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true)"。我知道它会自动重定向5次。

然而,问题是,我得到的页面不是最后一页,而是它之间的页面。

curl_exec返回:

  

HTTP / 1.1 302暂时移动服务器:Apache位置:   www.fatwallet.com/interstitial/signin变化:接受编码
  内容编码:gzip内容长度:20内容类型:text / html   日期:星期一,2015年4月13日12:03:19 GMT连接:保持活力
  Set-Cookie:JSESSIONID = A9E28337052B56ADAC8451854A276210;路径= /;   HttpOnly

     

HTTP / 1.1 302暂时移动服务器:Apache位置:   www.fatwallet.com/interstitial/signin变化:接受编码
  内容编码:gzip内容长度:20内容类型:text / html   日期:星期一,2015年4月13日12:03:19 GMT连接:保持活力

     

HTTP / 1.1 200 OK服务器:Apache Cache-Control:   no-cache,no-store,max-age = 0到期日:1969年12月31日星期三23:59:59 GMT
  X-UA兼容:IE = edge,chrome = 1 Vary:User-Agent,Accept-Encoding
  内容 - 语言:内容编码:gzip内容类型:   text / html; charset = UTF-8 Content-Length:16949日期:星期一,4月13日   2015 12:03:20 GMT连接:keep-alive Set-Cookie:   list_styles =网格;到期=周六,01-May-2083 15:17:27 GMT;路径= /
  Set-Cookie:non_mem = f86c0692-826f-40f2-9fa1-1e2f9a957af8;过期=星期六,   20-May-2083 15:17:27 GMT;路径= / ............

似乎第三个重定向代码是" HTTP/1.1 200 OK",但它不是最后一页。如果你查看http://www.fatwallet.com/ticket/store/A4C?s=storepage,你会理解我的意思。此外,无法在返回的页面中找到最终的URL 所以我的问题是,即使它收到HTTP/1.1 200 OK,它是否能够使卷曲继续重定向?

还有另一种方法可以解决这个问题(使用snoopy或python)吗? 谢谢大家!

2 个答案:

答案 0 :(得分:0)

似乎最后一次重定向是通过JS完成的,而不是本机HTTP的答案。您只需要更高级的爬虫程序来执行JS代码。

答案 1 :(得分:0)

只需看到第一个重定向页面的源代码(view-source:https://www.fatwallet.com/interstitial/signin),你会发现一些HTML元素中的最后一个,似乎有些JS代码正在读取这些值并做最后一个重定向