Как получить файл HTML с помощью Python?

Я не очень хорошо знаком с Python. Я пытаюсь извлечь имена артистов (для начала :)) со следующей страницы: http://www.infolanka.com/miyuru_gee/art/art.html .

Как получить страницу? Мои две основные проблемы: какие функции использовать и как отфильтровывать бесполезные ссылки со страницы?

Пример использования urlib и lxml.html:

import urllib from lxml import html url = "http://www.infolanka.com/miyuru_gee/art/art.html" page = html.fromstring(urllib.urlopen(url).read()) for link in page.xpath("//a"): print "Name", link.text, "URL", link.get("href") output >> [('Aathma Liyanage', 'athma.html'), ('Abewardhana Balasuriya', 'abewardhana.html'), ('Aelian Thilakeratne', 'aelian_thi.html'), ('Ahamed Mohideen', 'ahamed.html'), ] 

Я думаю, что «eyquem» будет моим выбором, но мне нравится использовать httplib2 вместо urllib . urllib2 слишком низкоуровневый lib для этой работы.

 import httplib2, re 
pat = re.compile ('
(. +?) ') http = httplib2.Http () заголовки, body = http.request («http://www.infolanka.com/miyuru_gee/art/art.html»)
li = pat.findall (тело) печатать ли

  1. Используйте urllib2 для получения страницы.

  2. Используйте BeautifulSoup для анализа HTML (страницы) и получите то, что вы хотите!

Проверьте это мой друг

 import urllib.request import re pat = re.compile('
(.+?)') url = 'http://www.infolanka.com/miyuru_gee/art/art.html' sock = urllib.request.urlopen(url).read().decode("utf-8") li = pat.findall(sock) print(li)

Или идите прямо вперед:

 import urllib import re pat = re.compile('
(.+?)') url = 'http://www.infolanka.com/miyuru_gee/art/art.html' sock = urllib.urlopen(url) li = pat.findall(sock.read()) sock.close() print li

И уважайте robots.txt и дросселируйте ваши запросы 🙂

(По-видимому, urllib2 уже соответствует этому полезному сообщению SO ).

В принципе, есть вызов функции:

render_template()

Вы можете легко вернуть одну страницу или список страниц с ней, и она автоматически считывает все файлы из your_workspace\templates .

Пример:

/root_dir /templates /index1.html, /index2.html /other_dir /

routes.py

@app.route('/') def root_dir(): return render_template('index1.html')

@app.route(/) def root_dir_with_params(username): retun render_template('index2.html', user=username)

index1.html – без параметров

Hello guest!

index2.html – с параметрами

{% if name %}

Hello {{ user }}!

{% else %}

Hello guest.