我使用Python機械化打開這種格式的URL打開網址...Python的機械化 - 以hash符號
https://www.simplewebsite.com?view=discussions#/?page=2
當頁面打開......它得到這個...
https://www.simplewebsite.com?view=discussions
完全繞開了「#」標誌後有什麼...
任何線索如何打開網址是什麼?我花了很多時間在網上搜索...沒有正面回答......
我使用Python機械化打開這種格式的URL打開網址...Python的機械化 - 以hash符號
https://www.simplewebsite.com?view=discussions#/?page=2
當頁面打開......它得到這個...
https://www.simplewebsite.com?view=discussions
完全繞開了「#」標誌後有什麼...
任何線索如何打開網址是什麼?我花了很多時間在網上搜索...沒有正面回答......
您使用的查詢字符串:
view=discussions%23%2F%3Fpage%3D2
?例如:
import mechanize as mech
from urllib import urlencode
host = "http://localhost:8080/1.php"
data = {"view": "discussions#/?page=2"}
data = urlencode(data)
print "encoded data sent by python:\n\t", data
resp = mech.urlopen(host + "?" + data)
print resp.read()
它當然'有效'。另一方是否知道如何正確解碼和解析查詢字符串是另一回事。舉例來說,如果你要求在http://localhost:8080/1.php
以下php程序:
<?php
parse_str(
urldecode($_SERVER['QUERY_STRING']),
$data
);
//You might also call htmlentities() on the query string
//if a browser was going to display the result
echo "php received the following data:\n";
foreach($data as $key => $val)
{
echo "\t $key ----> $val \n";
}
?>
... Python程序輸出:
encoded data sent by python:
view=discussions%23%2F%3Fpage%3D2
php received the following data:
view ----> discussions#/?page=2
至於這樣的:
When the page opens...it gets this... https://www.simplewebsite.com?view=discussions Completely bypassing what's after the "#" mark...
RFC說:
查詢組件由第一個問號(「?」) 字符指示,並以URI結尾的數字符號(「#」)字符或 結尾。 http://tools.ietf.org/html/rfc3986#section-3.4
最有可能該網站依靠的JavaScript解析URL的其餘部分(#
後);見window.location。
除非Mechanize可以以某種方式運行JavaScript,否則不會得到您想要的結果。嘗試Selenium,Phantom.JS/Phantompy或類似的東西。
該網站實際上可能支持直接傳遞參數,那麼你可以要求
https://www.simplewebsite.com?view=discussions&page=2
如果沒有,你就必須檢查AJAX查詢它對請你其實想的數據。
謝謝Koterpillar ...我以爲這樣的東西...但希望有一些破解或東西:) – user2526046
'&page = 2'是一個黑客我會嘗試。您介意發佈實際的網站網址嗎? – Koterpillar
我已經嘗試使用&page = 2但不起作用......並且對於實際的URL ...這是我公司的協作空間,需要用戶和密碼才能訪問...... – user2526046
哈希標籤後面出現的URL部分是對HTML錨點的引用,它們由客戶端(通常是Web瀏覽器)處理,並且永遠不會發送到服務器。
該網站很可能是加載頁面加載運行的Javascript代碼。該代碼解析錨點名稱並更新頁面基礎。在這種情況下,很明顯,JavaScript代碼將不得不向服務器發送ajax請求以獲取第2頁,然後更新HTML文檔以顯示該數據。
不幸的是,機械化將無法處理這種類型的網站,因爲它取決於客戶端上運行的Javascript代碼。你可以用phantom.js做一些這樣的事情,一個可以運行客戶端腳本的無頭網頁瀏覽器客戶端。
感謝Miguel ...我實際上需要使用Mechanize和Python ...所以雖然phantom.js看起來很酷...我不認爲我可以從我的場景中使用它... – user2526046
然後,您需要確保目標網站不運行客戶端JavaScript,因爲你的軟件無法做到這一點。這與搜索引擎在嘗試索引Ajax網站時遇到的問題相同,這是一個棘手的問題。 – Miguel
7stud ...謝謝...但不起作用...即使用它的編碼代碼替換「#」也沒有幫助... – user2526046
您應該嘗試對整個查詢字符串進行urlencode,如我發佈的例子。 – 7stud