Как получить 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 для этой работы.


  1. использовать urllib2 чтобы получить страницу.

  2. использовать 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>