Я пытаюсь создать веб-браузер, который анализирует весь html на странице, захватывает указанную ссылку (через raw_input
), следует этой ссылке, а затем повторяет этот процесс определенное количество раз (один раз снова через raw_input
). Я могу захватить первую ссылку и успешно ее распечатать. Тем не менее, у меня возникают проблемы «зацикливания» всего процесса и, как правило, захвата неправильной ссылки. Это первая ссылкаПроблемы с ссылками на webcrawler
https://pr4e.dr-chuck.com/tsugi/mod/python-data/data/known_by_Fikret.html
(Полное раскрытие, это вопросы, относится к заданиям для курса Coursera)
Вот мой код
import urllib
from BeautifulSoup import *
url = raw_input('Enter - ')
rpt=raw_input('Enter Position')
rpt=int(rpt)
cnt=raw_input('Enter Count')
cnt=int(cnt)
count=0
counts=0
tags=list()
soup=None
while x==0:
html = urllib.urlopen(url).read()
soup = BeautifulSoup(html)
# Retrieve all of the anchor tags
tags=soup.findAll('a')
for tag in tags:
url= tag.get('href')
count=count + 1
if count== rpt:
break
counts=counts + 1
if counts==cnt:
x==1
else: continue
print url
Я не полностью понимания вход. URL-адрес довольно ясен. Но почему позиция и счет? Кроме того, почему вы хотите повторить весь процесс несколько раз? Вам не нужно просто захватывать все URL-адреса на странице? Обычно вам просто нужно загрузить страницу один раз и получить все теги. Можете ли вы уточнить? – DJanssens
Извините, если я был неясен, я хочу, чтобы веб-браузер получал ссылку на веб-странице, например, если пользователь вводит «позицию» как 3, а «счет» - 4, он захватывает третью ссылку, а затем вводит ее ссылку на urllib, разобрать эту ссылку, захватить третью ссылку на этой странице и цикл 4 раза, как указано в «счете». –
Но тогда вам не нужно загружать страницу 4 раза, правильно? Вы можете просто сохранить анализируемые ссылки в виде списка и использовать только те, которые указаны пользователем. – DJanssens