Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python web爬网:URL中的不同查询字符串指向同一页面_Python_Url_Web Crawler_Query String_Urllib - Fatal编程技术网

Python web爬网:URL中的不同查询字符串指向同一页面

Python web爬网:URL中的不同查询字符串指向同一页面,python,url,web-crawler,query-string,urllib,Python,Url,Web Crawler,Query String,Urllib,在验证要添加到队列的URL时,我似乎无法克服的问题之一是解析查询字符串。具有不同查询字符串(实际路径和查询字符串)的两个不同URL: A: B: 这两个URL都是相同的页面,但由于最后一个查询字符串参数导致它们的URL不同,所以我的代码将它们解释为唯一的。在此之前的所有查询字符串参数都是我访问页面所必需的,但最后一个参数不是。最终的结果是一个效率极低的脚本,获取和爬行可能数百个不同的URL,所有这些URL都指向同一个位置。我需要的是一种有效的方法来识别和消除冗长的查询字符串参数,并保留其他参数。

在验证要添加到队列的URL时,我似乎无法克服的问题之一是解析查询字符串。具有不同查询字符串(实际路径和查询字符串)的两个不同URL:

A:

B:


这两个URL都是相同的页面,但由于最后一个查询字符串参数导致它们的URL不同,所以我的代码将它们解释为唯一的。在此之前的所有查询字符串参数都是我访问页面所必需的,但最后一个参数不是。最终的结果是一个效率极低的脚本,获取和爬行可能数百个不同的URL,所有这些URL都指向同一个位置。我需要的是一种有效的方法来识别和消除冗长的查询字符串参数,并保留其他参数。Urllib.parse实际上没有任何明显的解决方案,我可以使用该库轻松解析该查询字符串,但没有必要验证查询字符串。

为什么不检查查询字符串长度并删除太长的查询字符串参数以确定查询是否唯一?@MohammadAli感谢您的回答,我想我会尝试一下。我必须看看长字符参数可以有多长,因为如果它们太短,我可能会切掉有用的参数。时间会证明一切。再次感谢,没问题,我看到你想要做什么的唯一其他方法是下载网页的副本,并将该网页或其哈希存储在数据库中,这样可以让你在比较哈希时看到你正在刮取的任何新URL是否返回与另一URL相同的内容为什么不检查查询字符串长度并删除太长的查询字符串参数从确定一个问题是否是唯一的开始算起很久了?@MohammadAli谢谢你的回答,我想我会尝试一下。我必须看看长字符参数可以有多长,因为如果它们太短,我可能会切掉有用的参数。时间会证明一切。再次感谢。没问题,我看到你想要做什么的唯一其他方法是下载一份网页副本并将该网页或其散列存储在数据库中,这样你就可以在比较散列时查看你正在抓取的任何新URL是否返回与另一URL相同的内容