Как получить файл 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

Ответ 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>