我正在做一个爬虫项目。我陷入了这样一种情况,即页面上的 href 文本在该域下的其他页面上不断重复。例如,如果 url 是 example.com,那么这些页面上的 href 值为 hrefList=[/hello/world,/aboutus,/blog,/contact]。
所以这些页面的网址是 example.com/hello/world example.com/aboutus 等
现在在 example.com/hello/world 页面上,hrefList 再次出现。因此,我将获取 URL 作为 example.com/hello/world/hello/world、example.com/hello/world/aboutus 等
现在在这些页面中,/hello/world/hello/world 是一个正确的页面,其 http 状态为 200,并且正在递归地发生。其余页面将找不到页面,因此可以丢弃
我正在获取不正确网址的新网址列表。有什么办法可以克服这个吗?
这是我的代码库:
for url in allUrls:
if url not in visitedUrls:
visitedUrls.append(url)
http=httplib2.Http()
response,content=http.request(url,headers={'User-Agent':'Crawler-Project'})
if (response.status/100<4):
soup=BeautifulSoup(content)
links=soup.findAll('a',href=True)
for link in links:
if link.has_key('href'):
if len(link['href']) > 1:
if not any(x in link['href'] for x in ignoreUrls):
if link['href'][0]!="#":
if "http" in link["href"]:
allUrls.append(link["href"])
else:
if url[-1]=="/" and link['href'][0]=="/":
allUrls.append(url+link['href'][1:])
else:
if not (url[-1] =="/" or link['href'][0] =="/"):
allUrls.append(url+"/"+link['href'])
else:
allUrls.append(url+link['href'])