Как получить файл HTML с помощью Python?
Я не очень хорошо знаком с Python. Я пытаюсь извлечь имена артистов (для начала:)) со следующей страницы: http://www.infolanka.com/miyuru_gee/art/art.html.
Как получить страницу? Мои две основные проблемы: какие функции использовать и как отфильтровывать бесполезные ссылки со страницы?
Ответы
Ответ 1
Пример использования 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'),
]
Ответ 2
Я думаю, что "eyquem" тоже будет моим выбором, но мне нравится использовать httplib2 вместо urllib. urllib2 слишком низкоуровневый lib для этой работы.
import httplib2, re
pat = re.compile('<DT><a href="[^"]+">(.+?)</a>')
http = httplib2.Http()
headers, body = http.request("http://www.infolanka.com/miyuru_gee/art/art.html")
li = pat.findall(body)
print li
Ответ 3
-
Используйте urllib2, чтобы получить страницу.
-
Используйте BeautifulSoup, чтобы проанализировать HTML (страницу) и получить то, что вы хотите!
Ответ 4
Проверьте этот мой друг
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)
Ответ 5
Или идите прямо вперед:
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
Ответ 6
И уважайте robots.txt и дросселируйте ваши запросы:)
(По-видимому, urllib2 уже соответствует этому полезному сообщению SO).
Ответ 7
В принципе, есть вызов функции:
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 - с параметрами
<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>