Python HTML スクレイピング
-
22-09-2019 - |
質問
これは実際にはスクレイピングではなく、クラスが特定の値を持つ Web ページ内の URL を見つけようとしているだけです。例えば:
<a class="myClass" href="/url/7df028f508c4685ddf65987a0bd6f22e">
href値を取得したい。これを行う方法について何かアイデアはありますか?おそらく正規表現でしょうか?いくつかのサンプルコードを投稿していただけますか?BeautifulSoup などの HTML スクレイピング ライブラリは、このためだけに少しやりすぎだと思います...
とても感謝しています!
解決
正規表現は通常悪い考えです。使ってみてください 美しいスープ
簡単な例:
html = #get html
soup = BeautifulSoup(html)
links = soup.findAll('a', attrs={'class': 'myclass'})
for link in links:
#process link
他のヒント
ああ、そうではない HTMLを解析するための正規表現!
幸いなことに、Python には次のものがあります。 美しいスープ または lxml 私たちのためにその仕事をするために。
正規表現は悪い選択です。HTML は通常の言語ではありません。どうでしょうか 美しいスープ?
HTML の解析に正規表現を使用しないでください。見る この質問に対する最初の答え 説明のために:)
ビューティフルスープの場合は +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 パーサーは必須ではありません。
問題は、私は HTML ページの構造を知っており、その特定の種類のリンク (class="myclass") を見つけたいだけであるということです。とにかく美しいスープ?
HTML の解析を読む クトゥルフのやり方 https://blog.codinghorror.com/parsing-html-the-cthulhu-way/
所属していません StackOverflow