我正在尝试抓取网站“http://www.daxontech.com” 如果我们在网络浏览器中输入上述地址,则地址会自动更改为http://www.benqmaterials.com/index.aspx
我尝试使用响应代码将我的程序重定向到上面的网站,但响应代码是200.有没有办法检索上述地址。我正在使用Jsoup进行爬行。 提前谢谢。
答案 0 :(得分:3)
您引用的网站使用元重定向,这是在将标头发送到客户端后完成的。
<meta http-equiv="refresh" content="0; url=http://www.BenQMaterials.com/index.aspx">
这是您正在抓取的网站的错误,如果不在网页中解析元刷新标记(或其他类似的重定向方法)中的html,您可能无法做到这一点
答案 1 :(得分:1)
$ curl "http://www.daxontech.com" -i
HTTP/1.1 200 OK
Content-Type: text/html
Last-Modified: Tue, 04 Jan 2011 08:47:58 GMT
Accept-Ranges: bytes
ETag: "61cc416ecabcb1:0"
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Tue, 07 Jan 2014 10:11:11 GMT
Content-Length: 304
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<meta http-equiv="refresh" content="0; url=http://www.BenQMaterials.com/index.aspx">
<title>BenQ Materials, the top four manufacturers of polarizer in the world.</title>
</head>
<body>
</body>
</html>
这不是重定向,而是
<meta http-equiv="refresh" content="0; url=http://www.BenQMaterials.com/index.aspx">
http-equiv属性为内容属性的信息/值提供HTTP标头。
http-equiv属性可用于模拟HTTP响应头。
refresh:定义文档刷新自身的时间间隔。 例如:
<meta http-equiv="refresh" content="300">
注意:应谨慎使用值“refresh”,因为它可以控制页面远离用户。使用“刷新”将导致W3C的Web内容可访问性指南失败。
因此您可以使用xpath ("//meta[@http-equiv='refresh']");
或使用正则表达式查找字符串<meta http-equiv="refresh"
来检查最终位置。