我正在尝试创建一个抓取工具,以便从网站下载一些内容。
假设要消费的网址类似于
clickUrl ="http://www.example.com/idocs-nph/search/pdfViewerForm.html?args=5C7QrtC22wGYK2xFpSwMnXdtvSoClrL8xJKSjjboeVQpCCmqt4mgGEHlbmahCJFQEmRQwePEviF8EeCoaT0MAKztT3Sb63xk3VkL3PiCQ3RLoVYQqjKiogfu8Gq1RKKQmyoZK8o4WQM0kj-3nPY6gOqNXOY8VS4VhacAYKom_mBgul0xmRvgLA..";
在Web浏览器上,执行下载,返回包含刷新META
的html<meta http-equiv="REFRESH" content="0;url=http://www.example.com/idocs-nph/search/pdfViewerForm.html?args=5C7QrtC22wGYK2xFpSwMnXdtvSoClrL8xJKSjjboeVQpCCmqt4mgGEHlbmahCJFQEmRQwePEviF8EeCoaT0MAKztT3Sb63xk3VkL3PiCQ3TmKpPQrAvPZQfu8Gq1RKKQmyoZK8o4WQMl05IxFu8XBzuJ49RIAPXJ8d-HneKenBQ-TKbP_e17qQ.."/>
并且浏览器要求保存文件的文件名
在我的抓取器代码上,
我打开了一个关于clickURL的WebRequest,
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(clickUrl);
我使用新的WebRequest检测并关注REFRESH网址, 但响应是一个新的html包含REFRESH META,而不是实际文件(非常递归)
HttpWebRequest不包含任何Cookie
答案 0 :(得分:1)
该网站很可能正在检查Cookie。发生这种情况的原因是,当您向某人发送下载文件的链接时,收件人仍然可以在他或她下载文件之前被定向到该网站。
Sourceforge在这里做了一些有趣的事情可能有所帮助。如果从Sourceforge下载文件,则会出现在您描述的页面上。但是,如果您使用wget打开完全相同的页面,您将看到它确实加载了该文件。它会检测到你不是一个普通的浏览器并向你发送文件(无论如何,HTML都不会对wget有任何好处;它不会看广告)。
我建议您尝试以下方法。当您找到具有此类重定向的页面时,请重定向到该页面。如果您随后检测到您获得了相同的内容,请在没有User-Agent的情况下再次尝试。也许这实际上会给你文件。