我正在尝试使用httplib2发出http请求:
import httplib2, time, re, urllib`
conn = httplib2.Http(".cache")
page = conn.request(u"http://www.mydomain.com/search?q=cars#p=100","GET")
响应没问题,但“#p = 100”没有被传递过来。有谁知道如何通过httplib2传递这个?
感谢
答案 0 :(得分:8)
URL中的片段不会传递给服务器。
答案 1 :(得分:2)
给Ignacio +1,因为他先回答正确。
相关文档来自http://tools.ietf.org/html/rfc2396#section-4.1
当使用URI引用对标识的资源执行检索操作时,通过交叉线(“#”)字符与URI分隔的可选片段标识符包含要由用户代理解释的其他参考信息检索操作成功完成后。 因此,它不是URI的一部分,但通常与URI结合使用。
对于上面的链接,浏览器使用交叉线后面的信息作为HTML中特定位置的书签。
答案 2 :(得分:1)
如果有其他人偶然发现这个问题并希望得到答案,我会从另一个Stack Overflow question找到答案:
哈希(#)符号后的url片段用于客户端处理,实际上并未发送到Web服务器。我的猜测是页面上有一些javascript使用AJAX从服务器请求正确的数据,你需要找出用于它的URL。
如果您使用Chrome,则可以观看开发者工具的“网络”标签,并在点击链接转到浏览器的第二页时查看请求的网址。
要获取开发者工具在Chrome中按F11(Windows)或Apple + Alt + i(Mac)。如果单击右下角的选项齿轮,请确保选中Preserve log upon navigation
。