【发布时间】:2015-09-06 19:03:32
【问题描述】:
这是我的爬虫代码,我相信我基本上拥有我需要的所有组件,有些可能只是乱序,我知道正在读取 robots.txt。不幸的是,它仍然吐出不应该访问的网址。有人可以帮我吗?
import urllib.request
import urllib.parse
from bs4 import BeautifulSoup
import re
import urllib.robotparser
url = "http://www.imdb.com"
urls = [url]
visited =[]
robotsUrl = url +'/robots.txt'
from multiprocessing import Process, Manager
while len(urls) < 1000:
parse = urllib.robotparser.RobotFileParser()
parse.set_url(robotsUrl)
parse.read()
if parse.can_fetch('*',urls[0]):
try:
htmltext = urllib.request.urlopen(urls[0]).read()
except:
print (urls[0])
soup = BeautifulSoup(htmltext, "html.parser")
urls.pop(0)
print(len(urls))
for link in soup.findAll('a', href=True):
link['href'] = urllib.parse.urljoin(url,link['href'])
if url in link['href'] not in visited:
urls.append(link['href'])
visited.append(link['href'])
print (visited)
伪代码:
for link in soup.findAll('a', href=True):
link['href'] = urllib.parse.urljoin(url,link['href'])
#something like if parse.can_fetch('*',link['href']):
if url in link['href'] not in visited:
urls.append(link['href'])
visited.append(link['href'])
【问题讨论】:
标签: python-3.x beautifulsoup web-crawler robots.txt