私は自分自身でPythonを教えていて、簡単なWebクローラー・エンジンを構築しました。以下のコードはPythonでの単純なWebクローラー
def find_next_url(page):
start_of_url_line = page.find('<a href')
if start_of_url_line == -1:
return None, 0
else:
start_of_url = page.find('"http', start_of_url_line)
if start_of_url == -1:
return None, 0
else:
end_of_url = page.find('"', start_of_url + 1)
one_url = page[start_of_url + 1 : end_of_url]
return one_url, end_of_url
def get_all_url(page):
p = []
while True:
url, end_pos = find_next_url(page)
if url:
p.append(url)
page = page[end_pos + 1 : ]
else:
break
return p
def union(a, b):
for e in b:
if e not in a:
a.append(e)
return a
def webcrawl(seed):
tocrawl = [seed]
crawled = []
while True:
page = tocrawl.pop()
if page not in crawled:
import urllib.request
intpage = urllib.request.urlopen(page).read()
openpage = str(intpage)
union(tocrawl, get_all_url(openpage))
crawled.append(page)
return crawled
ですが、常にHTTP 403エラーが表示されます。
403の手段[**禁断**] https://en.wikipedia.org/wiki/HTTP_403 ) - あなたがアクセスしようとしているURLを知っていれば、これが*望ましい*動作であるかどうかは分かりません。 –
私が達成しようとしているのは、コードがあるページからいくつかのURLを取得して個々のURLに入り、以前に見つかったURLのリストの中にさらに多くのURLを取得できるかどうかを確認することです。私はおそらく、もし私がいくつかのHTTPハイパーリンクを持つシンプルなWebページを持っていれば、これを達成するでしょう。私はhttps://xkcd.com/353/で試しました。 – Sayan