web-dev-qa-db-ja.com

Pythonを使用してHTMLファイルを取得する方法は?

私はPythonにあまり詳しくありません。次のページからアーティスト名を抽出しようとしています(最初に:))。 http://www.infolanka.com/miyuru_gee/art/art.html

ページを取得するにはどうすればよいですか?私の2つの主な懸念事項は次のとおりです。使用する機能と、ページから不要なリンクを除外する方法

17
nakiya

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'),
    ]
21
Vince Spicer

「eyquem」の方法も私の選択だと思いますが、rllibの代わりにhttplib2を使用したいです。 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
7
Miere

これを私の友人に確認してください

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)
6
pulsedia
  1. rllib2 を使用してページを取得します。

  2. BeautifulSoup を使用してHTML(ページ)を解析し、必要なものを取得します!

6
user225312

またはまっすぐ進む:

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
4
eyquem

robots.txt を尊重し、リクエストを調整します:)

(どうやらurllib2はこれに応じてすでに helpful SO post )しているようです。

1
Tim Barrass

基本的に、関数呼び出しがあります:

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>_

0
SysMurff