2013-10-26 101 views
0

頁面url是www.nenu.edu.cn/intramural/content/news/110.php
使用chrome獲取源代碼與使用請求不一樣。 我使用requests.get是使用請求獲取頁面而不是Python中的源代碼,爲什麼?我如何獲得源代碼?

u'\r\n<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r\n<html xmlns="http://www.w3.org/1999/xhtml">\r\n<head>\r\n<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />\r\n<title>\u4e1c\u5317\u5e08\u8303\u5927\u5b66</title>\r\n<link href="../../images/nenu_news.css" rel="stylesheet" type="text/css" />\r\n</head>\r\n<body>\r\n\r\n<script language="javascript" type="text/javascript"> window.location ="http://www.nenu.edu.cn/intramural/content/news/110.php";</script>' 
+1

服務器端源代碼不會發送到瀏覽器。就此而言,編譯語言的源代碼甚至可能不在服務器上,只有編譯好的程序纔是。 Chrome(或任何瀏覽器或發出http請求的其他程序)只能查看響應中實際發送的內容。 – nnnnnn

+0

@nnnnnn:我想這不是他要問的,但我同意他的問題的措辭和標題非常混亂,寫得不好(用英文破碎),很難看到他實際上在做什麼......但是那個窗口.location = ...'絕對看起來相關。 –

+1

@ErikAllik - 是的,我把我最好的猜測告訴了OP似乎在問什麼。如果問題是關於從響應中提取'window.location = ...'JS,那麼,那不是我真正稱之爲「源代碼」的東西。但從答覆你的答案你顯然是正確的(所以+1)。 – nnnnnn

回答

2

如果你看的是requests.get是給你的HTML裏面,你會看到下面的代碼片段:

<script language="javascript" type="text/javascript"> 
window.location ="http://www.nenu.edu.cn/intramural/content/news/110.php"; 
</script> 

這意味着,當瀏覽器加載頁面中,頁面內的小型Javascript代碼段會告訴瀏覽器導航至http://www.nenu.edu.cn/intramural/content/news/110.php-當您在Chrome中查看源代碼時,您可能會看到該頁面的HTML內容。然而,requests不會在響應中解析和執行Javascript,因爲它不是瀏覽器,所以它只會給你字面上的響應文本。

那樣簡單。

編輯:其實你的問題(尤其是標題)是這麼寫的不好(一般清晰度方面,以及您的很差的英語語法),那我不知道,如果這是你的唯一的事情問,所以請儘量在將來寫更多的精力來寫你的問題。

PS。使用window.location = ...或類似技巧做重定向的頁面在不使用完整瀏覽器或瀏覽器模擬器的情況下抓取相當困難。

+0

謝謝,如果我想蜘蛛這個網頁。在python中,我應該怎麼做? – zhangang

+0

@ user2606397:我是您的私人助理,我必須爲您編寫代碼? –

+0

@ user2606397:另外,如果我回答了您的問題,請通過接受它來顯示您的感謝 - 這是Stack Overflow的工作原理。 –

相關問題