Pypi パッケージなどのファイル ツリーを表示する URLの場合、URL ツリーをたどって次のように一覧表示する小さな堅牢なモジュールはありますls -lR
か?
私は、ファイル属性、リンクの種類、サイズ、日付などの標準エンコーディングが html<A
属性にないことを収集します (訂正します)
。
でも、きっとこのホイール(Unix file tree -> html -> treewalk API -> ls -lR or find
)はできているのでは?
(いくつかのスパイダー/Web クローラー/スクレーパーが存在するようですが、解析用の BeautifulSoup にもかかわらず、これまでのところ見苦しくアドホックに見えます)。
Denis
質問する
4626 次
3 に答える
1
他の人は BeautifulSoup を推奨していますが、lxmlを使用する方がはるかに優れています。その名前にもかかわらず、HTML の解析とスクレイピングにも使用されます。BeautifulSoup よりもはるかに高速です。lxml API を学習したくない場合は、BeautifulSoup 用の互換 API もあります。
Google App Engine を使用している場合や、純粋な Python 以外が許可されていない場合を除き、BeautifulSoup を使用する理由はもうありません。
CSSセレクターもあるので、この種のことは簡単です。
于 2009-08-03T15:37:12.480 に答える
0
このような BeautifulSoup ワンライナーは、 <table> 行を Python に変換できることが判明しました --
from BeautifulSoup import BeautifulSoup
def trow_cols( trow ):
""" soup.table( "tr" ) -> <td> strings like
[None, u'Name', u'Last modified', u'Size', u'Description']
"""
return [td.next.string for td in trow( "td" )]
def trow_headers( trow ):
""" soup.table( "tr" ) -> <th> table header strings like
[None, u'Achoo-1.0-py2.5.egg', u'11-Aug-2008 07:40 ', u'8.9K']
"""
return [th.next.string for th in trow( "th" )]
if __name__ == "__main__":
...
soup = BeautifulSoup( html )
if soup.table:
trows = soup.table( "tr" )
print "headers:", trow_headers( trows[0] )
for row in trows[1:]:
print trow_cols( row )
上記の sysrqb の 1 行の正規表現と比較すると、これは ... 長いです。誰が言ったの
「HTMLの一部を常に解析することも、時々すべてのhtmlを解析することもできますが、そうではありません...」
于 2009-04-03T08:49:42.220 に答える