загрузка файла с mechanize

#python #mechanize

#python #механизировать

Вопрос:

У меня есть экземпляр браузера, который открыл страницу . Я хотел бы загрузить и сохранить все ссылки (они представляют собой PDF-файлы). Кто-нибудь знает, как это сделать?

Спасибо

Ответ №1:

 import urllib, urllib2,cookielib, re
#http://www.crummy.com/software/BeautifulSoup/ - required
from BeautifulSoup import BeautifulSoup

HOST = 'https://www.adobe.com/'

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

req = opener.open( HOST   'pdf' )
responce = req.read()

soup = BeautifulSoup( responce )
pdfs = soup.findAll(name = 'a', attrs = { 'href': re.compile('.pdf') })
for pdf in pdfs:
    if 'https://' not in pdf['href']:
        url = HOST   pdf['href']
    else:
        url = pdf['href']
    try:
        #http://docs.python.org/library/urllib.html#urllib.urlretrieve
        urllib.urlretrieve(url)
    except Exception, e:
        print 'cannot obtain url %s' % ( url, )
        print 'from href %s' % ( pdf['href'], )
        print e
    else:
        print 'downloaded file'
        print url
  

Комментарии:

1. Как большой поклонник BeautifulSoup, предупреждаю, что библиотека больше не разрабатывается активно. crummy.com/software/BeautifulSoup/3.1-problems.html Большинство людей, знакомых с BS, посоветовали мне перейти на lxml

2. Я считаю, что BeautifulSoup все еще активно разрабатывается

Ответ №2:

Возможно, это не тот ответ, который вы ищете, но я использовал lxml и библиотеки запросов вместе для автоматической выборки привязки:

Соответствующие примеры lxml http://lxml.de/lxmlhtml.html#examples (замените urllib на запросы )

И домашняя страница библиотеки запросов http://docs.python-requests.org/en/latest/index.html

Он не такой компактный, как mechanize, но обеспечивает больший контроль.

Комментарии:

1. Привет, Дэвид, я собираюсь попробовать сейчас