3

それは実際にはスクレイピングではありません。クラスが特定の値を持つWebページでURLを見つけようとしているだけです。例えば:

<a class="myClass" href="/url/7df028f508c4685ddf65987a0bd6f22e">

href値を取得したい。これを行う方法についてのアイデアはありますか?多分正規表現?サンプルコードを投稿していただけますか?BeautifulSoupなどのhtmlスクレイピングライブラリは、これだけでは少しやり過ぎだと思います...

どうもありがとう!

4

7 に答える 7

16

正規表現は通常悪い考えです。BeautifulSoupを使用してみてください

簡単な例:

html = #get html
soup = BeautifulSoup(html)
links = soup.findAll('a', attrs={'class': 'myclass'})
for link in links:
    #process link
于 2009-11-24T23:28:17.357 に答える
9

ああ、HTMLを解析するための正規表現ではありません!

幸いなことに、PythonにはBeautifulSoupまたはlxmlがあり、その仕事をしてくれます。

于 2009-11-24T23:27:31.087 に答える
2

正規表現は悪い選択です。HTMLは正規言語ではありません。美しいスープはどうですか?

于 2009-11-24T23:28:20.897 に答える
1

HTML の解析に正規表現を使用しないでください。説明については、この質問に対する最初の回答を参照してください:)

BeautifulSoupの場合は+1。

于 2009-11-24T23:35:00.947 に答える
1

タスクがこれほど単純な場合は、文字列操作を使用するだけです (正規表現も使用しません)。

f=open("htmlfile")
for line in f:
    if "<a class" in line and "myClass" in line and "href" in line:
        s = line [ line.index("href") + len('href="') : ]
        print s[:s.index('">')]
f.close()

このような場合、HTML パーサーは必須ではありません。

于 2009-11-25T00:32:35.337 に答える
0

Html TheCthulhuWayの解析を読むhttps://blog.codinghorror.com/parsing-html-the-cthulhu-way/

于 2009-11-24T23:30:07.820 に答える
0

問題は、HTML ページの構造を知っていて、その特定の種類のリンク (class="myclass") を見つけたいということです。とにかく美しいスープ?

于 2009-11-24T23:39:08.520 に答える