2016-06-17 4 views
-7

Я написал эту программу, цель которой - посетить 18-ю ссылку в списке ссылок, а затем на новой странице снова посетить 18-ю ссылку.Как бы вы упростили эту программу? Python

Эта программа работает по назначению, но она немного повторяющаяся и неэлегантная.

Мне было интересно, если у вас есть идеи о том, как сделать его проще, без каких-либо функций. Если бы я захотел повторить процесс 10 или 100 раз, это бы очень долго.

Спасибо за любые предложения!

# Note - this code must run in Python 2.x and you must download 
# http://www.pythonlearn.com/code/BeautifulSoup.py 
# Into the same folder as this program 

import urllib 
from BeautifulSoup import * 

url = raw_input('Enter - ') 
if len(url) < 1 : 
    url='http://python-data.dr-chuck.net/known_by_Oluwanifemi.html' 
html = urllib.urlopen(url).read() 
soup = BeautifulSoup(html) 

# Retrieve all of the anchor tags 
tags = soup('a') 
urllist = list() 
count = 0 
loopcount = 0 
for tag in tags: 
    count = count + 1 
    tg = tag.get('href', None) 
    if count == 18: 
     print count, tg 
     urllist.append(tg) 


url2 = (urllist[0]) 
html2 = urllib.urlopen(url2).read() 
soup2 = BeautifulSoup(html2) 

tags2 = soup2('a') 
count2 = 0 
for tag2 in tags2: 
    count2 = count2 + 1 
    tg2 = tag2.get('href', None) 
    if count2 == 18: 
     print count2, tg2 
     urllist.append(tg2) 
+0

За исключением использования XPath? –

+8

Это относится к codereview.stackexchange.com – RvdK

+3

Это говорит о том, что «я еще не узнал о функциях», вероятно, предложит рецензентам предложить вам узнать о них. – usr2564301

ответ

2

Это то, что вы могли бы сделать.

import urllib 
from BeautifulSoup import * 

url_1 = input('') or 'http://python-data.dr-chuck.net/known_by_Oluwanifemi.html' 

html_1 = urllib.urlopen(url_1).read() 
soup_1 = BeautifulSoup(html_1) 

tags = soup('a') 
url_retr1 = tags[17].get('href', None) 

html_2 = urllib.urlopen(url_retr1).read() 
soup_2 = BeautifulSoup(html_2) 

tags_2 = soup_2('a') 
url_retr1 = tags_2[17].get('href', None) 
Смежные вопросы