こんにちは。Pythonでスクレイピングを行っています。
例えば
https://medium.com/cotinetwork/coti-newsletter-september-20th-a9cac08e22df
こちらの記事で「本文だけ」を抽出したいのです。
htmlを見ると、
<p id="8149" **class="hy hz ct ia b ib ic id ie if ig ih ii ij ik il im in io ip iq ir is it iu iv cl dq"** data-selectable-paragraph="">Following the <a class="el iw" rel="noopener" href="/cotinetwork/beyond-payments-cotis-growth-plan-to-become-a-next-gen-financial-ecosystem-2907949df002">announcement</a> of COTI’s growth plan, various media outlets have provided coverage on COTI’s roadmap to become a next-generation financial ecosystem. COTI was recently featured on <a href="https://www.crypto-news-flash.com/coti-update-explains-native-tokens-recent-rally/" class="el iw" target="_blank" rel="noopener ugc nofollow">Crypto New Flash</a>, <a href="https://coinquora.com/coti-outlines-plans-for-the-future-as-native-token-soars/" class="el iw" target="_blank" rel="noopener ugc nofollow">CoinQuora</a>, and <a href="https://u.today/coti-releases-growth-plan-treasury-stablecoin-factory-and-ecosystem" class="el iw" target="_blank" rel="noopener ugc nofollow">U.TODAY.</a></p> ``` …(以下略)と書かれているので、本文のクラス名が
hy hz ct ia b ib ic id ie if ig ih ii ij ik il im in io ip iq ir is it iu iv cl dq
なのは分かるのですが、これをbeautiful soupを用いて取得することはできますでしょうか?
【試してみたこと】
①contents = soup.find_all('p', class_="hy hz ct ia b ib ic id ie if ig ih ii ij ik il im in io ip iq ir is it iu iv cl dq")
で本文の取得自体はできます。しかし、このクラス名自体を自動でpythonで取得できるようにしたいのです。
②a = soup.select("body > div > div > div:nth-child(3) > article > div > div > section > div:nth-child(3) > div > p")
などのCSS参照も考えてみたのですが、ブログごと/記事ごとに階層構造が異なるため、うまい参照方法が思いつきません。
③feedparserも試してみました。
feeds.entries[0].content
により、本文をタグ付きで取得することができましたが、<figure><li><img>タグなど余計な要素が入るため、これは消したいです。したがって、beautifulsoupの方が効率的かなと思っています。
どうぞお知恵をお貸しください。beautifulsoup以外のライブラリを用いても構いません。
宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/23 12:34
2021/11/23 12:44
2021/11/23 13:27