Как получить HTML-файл с помощью Python?
Я не очень хорошо знаком с Python. Я пытаюсь извлечь имена исполнителей (для начала :)) со следующей страницы: http://www.infolanka.com/miyuru_gee/art/art.html.
Как получить страницу? Мои две основные проблемы: какие функции использовать и как отфильтровать бесполезные ссылки со страницы?
7 ответов
пример использования 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 " way будет моим выбором, но мне нравится использовать httplib2 вместо urllib. urllib2 слишком низкий уровень lib для этой работы.
использовать urllib2 чтобы получить страницу.
использовать BeautifulSoup чтобы разобрать HTML (страницу) и получить то, что вы хотите!
проверьте это мой друг
import urllib.request
import re
pat = re.compile('<DT><a href="[^"]+">(.+?)</a>')
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('<DT><a href="[^"]+">(.+?)</a>')
url = 'http://www.infolanka.com/miyuru_gee/art/art.html'
sock = urllib.urlopen(url)
li = pat.findall(sock.read())
sock.close()
print li
и уважение роботы.txt и дроссель ваши запросы:)
(видимо urllib2 уже по этой полезно Так пост).
в основном, есть вызов функции:
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(/<username>) def root_dir_with_params(username): retun render_template('index2.html', user=username)
index1.html-без параметров
<html> <body> <h1>Hello guest!</h1> <button id="getData">Get Data!</button> </body> </html>
index2.html-с помощью params
<html> <body> <!-- Built-it conditional functions in the framework templates in Flask --> {% if name %} <h1 style="color: red;">Hello {{ user }}!</h1> {% else %} <h1>Hello guest.</1> <button id="getData">Get Data!</button> </body> </html>