Python href и сохранить в .txt (не беспокойтесь, не другой вопрос регулярных выражений) - PullRequest
0 голосов
/ 17 мая 2011

В настоящее время я работаю над созданием скрипта Python, который позволяет пользователю вводить хеш торрента (через терминал) и проверяет наличие дополнительных трекеров через веб-сайт. Тем не менее, я в растерянности и надеялся получить несколько советов, так как я новичок в программировании на Python. Я столкнулся с проблемой, так как мой результат с html_page имеет другую ссылку для перехода. Итак, моя программа назначает html_page "http://torrentz.eu/*******, но теперь я пытаюсь заставить ее перейти по другой ссылке на странице, чтобы получить http://torrentz.eu/announcelist_* ... при этом я обнаружил, что ее можно получить (как видно из просмотра источника)

    <a href="/announcelist_********" rel="e">&#181;Torrent compatible list here</a> 

или, возможно, извлечено отсюда, поскольку значения такие же, как и в / announcecelist_ **

    <a name="post-comment"></a>
    <input type="hidden" name="torrent" value="******" /> 

Так как / announcecelist_ ** появляется в текстовом формате, мне также было интересно, как я могу сохранить полученный список трекеров в текстовом файле .txt. Тем не менее, на данный момент это мой прогресс в написании скриптов на Python.

    from BeautifulSoup import BeautifulSoup
    import urllib2
    import re
    var = raw_input("Enter hash:")
    html_page = urllib2.urlopen("http://torrentz.eu/" +var)
    soup = BeautifulSoup(html_page)
    for link in soup.findAll('a'):
            print link.get('href')

Я также хотел бы заранее поблагодарить всех вас за поддержку, знания, советы и навыки.

Редактировать: я изменил код, чтобы он выглядел следующим образом:

    from BeautifulSoup import BeautifulSoup
    import urllib2
    import re
    hsh = raw_input("Enter Hash:")
    html_data = urllib2.urlopen("http://torrentz.eu/" +hsh, 'r').read()
    soup = BeautifulSoup(html_data)
    announce = soup.find('a', attrs={'href': re.compile("^/announcelist")})
    print announce

Что приводит к:

    <a href="/announcelist_00000" rel="e">&#181;Torrent compatible list here</a>

Итак, теперь я просто ищу способ получить только часть вывода / announcecelist_00000 .

Ответы [ 2 ]

1 голос
/ 07 марта 2012

Если то, что вы ищете, является значением атрибута href, то посмотрим, что вы получите, если добавите строку:

print announce['href']
1 голос
/ 17 мая 2011

Как только вы откроете URL, вы сможете найти href, как вы указали. Теперь откройте это href, используя urlopen. Когда вы столкнетесь с файлом, который хотите скопировать, откройте его так:

remote_file = open(filepath)
locale_file = open(path_to_local_file, 'w')

local_file.write(remote_file.read())
local_file.close()
remote_file.close()

Вот как, вероятно, вам следует поступить так:

# insert code that you've already written
for link in soup.findAll('a'):
    print link.get('href')
    remote_file = open(link.get('href'))
    local_file = open(path_too_local_file, 'w')
    local_file.write(remote_file.read())
    local_file.close()
    remote_file.close()

Я не тестировал этот код, но думаю, что он должен работать.

Надеюсь, это поможет

...