Web crawler 写一个网络爬虫——当谷歌看到#的时候,我如何模仿它呢!在URL中?

Web crawler 写一个网络爬虫——当谷歌看到#的时候,我如何模仿它呢!在URL中?,web-crawler,google-search,hashbang,Web Crawler,Google Search,Hashbang,我正在写一个网络爬虫,想做谷歌遇到#时做的事情它检索到的页面中的URL。如果URL没有#!谷歌将其添加到最终将获取和索引的页面列表中,但当它看到#时,它会做一些特别的事情!如中所述 当Google看到一个包含#的URL时它修改URL,对修改后的URL执行HTTP GET,然后对检索到的页面进行索引,就好像它检索到了具有#的URL一样(而不是它实际检索到的URL)。我试图模仿它所做的转换,但这并没有完全描述 引用的页面部分描述了谷歌如何修改URL,并告诉网站作者如何反向转换,以便他们知道原始URL

我正在写一个网络爬虫,想做谷歌遇到
#时做的事情它检索到的页面中的URL。如果URL没有#!谷歌将其添加到最终将获取和索引的页面列表中,但当它看到#时,它会做一些特别的事情!如中所述

当Google看到一个包含
#的URL时它修改URL,对修改后的URL执行HTTP GET,然后对检索到的页面进行索引,就好像它检索到了具有
#的URL一样(而不是它实际检索到的URL)。我试图模仿它所做的转换,但这并没有完全描述

引用的页面部分描述了谷歌如何修改URL,并告诉网站作者如何反向转换,以便他们知道原始URL是什么,并返回他们希望在
#下索引的数据URL。page说的一件事是:
注意:爬虫在转换过程中会转义片段中的某些字符。要检索原始片段,请确保取消片段中所有%XX个字符的扫描。更具体地说,%26应该变成&、%20应该变成空格、%23应该变成#、%25应该变成%,依此类推。

提到的“转换”是为了取代
#?\u转义\u片段=
并转义
后面文本中的一些特殊字符。该文本告诉网站作者通过(部分地)删除文本中的%XX来反转转换,该文本在修改后的URL中紧跟着
?\u转义的\u片段=
。问题是,我如何知道要转义哪些特殊字符,以便我的爬虫程序可以请求与Google请求相同的替换URL

在引用的段落中,谷歌列出了一些它将转义的字符,但结尾的“等等”表明转义字符的完整列表更长,但没有完全描述

理论上,每个字符(甚至字母)都可以转义为%XX,但每个网站正确处理该字符的几率并不高。我如何计算Google将转义哪些字符,以便我的爬虫程序将请求与Google相同的URL


(如果我控制了一个记录传入URL的网站,并且我可以让Google抓取,我可以制作一个页面,其中有很多URL在#!)之后带有特殊字符,并通过查看带有
的URL来查看逃逸的内容?_逃逸的u片段
——但我真的必须设置一个其他虚假的网站才能得到答案吗?)

我完全忽略了一个事实,即本文档中包含了转义字符的详细信息:

我将这个问题留在这里,以防其他人需要找到该规范