tag:crieit.net,2005:https://crieit.net/magazines/aocory/BS4%E3%81%A7%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0/feed
[連載] BS4でスクレイピングの投稿 - Crieit
Crieitで連載「[連載] BS4でスクレイピング」の最近の投稿
2019-03-02T12:42:31+09:00
https://crieit.net/magazines/aocory/BS4%E3%81%A7%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0/feed
tag:crieit.net,2005:PublicArticle/14850
2019-03-02T12:42:31+09:00
2019-03-02T12:42:31+09:00
https://crieit.net/posts/BeautifulSoup-pandas
BeautifulSoup入門 データをpandas データフレームに格納する
<hr />
<p>title: BeautifulSoup入門 データをpandas データフレームに格納する<br />
date: '2019-03-02'<br />
update:<br />
type: post<br />
icon: python-logo.png<br />
categoryName: Python</p>
<h2 id="categorySlug: python"><a href="#categorySlug%3A+python">categorySlug: python</a></h2>
<h2 id="データをいろいろ扱いたい"><a href="#%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E3%81%84%E3%82%8D%E3%81%84%E3%82%8D%E6%89%B1%E3%81%84%E3%81%9F%E3%81%84">データをいろいろ扱いたい</a></h2>
<p>google Colaboratoryは、環境構築不要で色々できるのが魅力です。<br />
今回は前回回収したCrieitのデータをCSVにしたいと思います。</p>
<h2 id="元のコード"><a href="#%E5%85%83%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89">元のコード</a></h2>
<pre><code>from bs4 import BeautifulSoup
import requests
base_url = "https://crieit.net/posts?page="
num = 1
while num <= 2:
url=base_url+ str(num)
r = requests.get(url)
soup = BeautifulSoup(r.text)
titles =soup.select("h5 a")
if len(titles) == 0:
print("これ以上記事はありません")
break
num += 1
for title in titles:
print(title.text)
</code></pre>
<h2 id="pandasをインポート"><a href="#pandas%E3%82%92%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88">pandasをインポート</a></h2>
<p>まずはPandrasをインポートします。</p>
<pre><code>import pandas as pd
</code></pre>
<h2 id="pandasデータフレームを作る"><a href="#pandas%E3%83%87%E3%83%BC%E3%82%BF%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%82%92%E4%BD%9C%E3%82%8B">pandasデータフレームを作る</a></h2>
<p>データを格納するためのハコを作ります。pandasではこのことをデータフレーム=dfといいます。<br />
titleを今回はCSVにします。<br />
columnsは、表の横列を示します。あとで出てきますが縦列はrowで表現します。</p>
<pre><code>columns = ["title"]
df = pd.DataFrame(columns=columns)
</code></pre>
<h2 id="for文を書き換え"><a href="#for%E6%96%87%E3%82%92%E6%9B%B8%E3%81%8D%E6%8F%9B%E3%81%88">for文を書き換え</a></h2>
<p>for文でtitleをデータフレームに格納します。<br />
そのときの処理は、PandasのSeriesを用います。<br />
そして、Pandasのデータフレームの末尾にappendを用いて追加します。</p>
<pre><code>for title in titles:
se= pd.Series(title.text, columns)
df = df.append(se, ignore_index=True)
</code></pre>
<h2 id="結果を表示させる"><a href="#%E7%B5%90%E6%9E%9C%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%95%E3%81%9B%E3%82%8B">結果を表示させる</a></h2>
<p>結果を表示させます。</p>
<pre><code>df
</code></pre>
<h2 id="修正したコード"><a href="#%E4%BF%AE%E6%AD%A3%E3%81%97%E3%81%9F%E3%82%B3%E3%83%BC%E3%83%89">修正したコード</a></h2>
<pre><code>from bs4 import BeautifulSoup
import requests
import pandas as pd
columns = ['title']
df = pd.DataFrame(columns=columns)
base_url = "https://crieit.net/posts?page="
num = 1
while num <= 1:
url=base_url+ str(num)
r = requests.get(url)
soup = BeautifulSoup(r.text)
titles =soup.select("h5 a")
if len(titles) == 0:
print("これ以上記事はありません")
break
num += 1
for title in titles:
se= pd.Series(title.text, columns)
df = df.append(se, ignore_index=True)
df
</code></pre>
<h2 id="動くサンプル"><a href="#%E5%8B%95%E3%81%8F%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB">動くサンプル</a></h2>
<p><a target="_blank" rel="nofollow noopener" href="https://colab.research.google.com/drive/1slyp9ssiahsR9TSiOGr7i8KPUxTXcU_z">Python3</a></p>
aocory
tag:crieit.net,2005:PublicArticle/14845
2019-02-28T17:00:36+09:00
2019-02-28T17:00:36+09:00
https://crieit.net/posts/BeautifulSoup-python-5c7795240dc8e
BeautifulSoup入門 スクレイピング実践編 複数ページに対応させる【python】
<h2 id="スクレイピングをしたい"><a href="#%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0%E3%82%92%E3%81%97%E3%81%9F%E3%81%84">スクレイピングをしたい</a></h2>
<p>Webサイトから情報をまとめてCSVでごにょごにょしたいなどにスクレイピングは便利です。<br />
今回は、Pythonのスクレイピングによく使われるBeautifulSoupを使って勉強していきます。<br />
BeautifulSoupには便利な機能がたくさんあります。<br />
今回も<a href="https://crieit.net/">crieit</a>さんからデータを抜いていきます。(制作者のdalaさんには了解済み)</p>
<h2 id="今回の目標"><a href="#%E4%BB%8A%E5%9B%9E%E3%81%AE%E7%9B%AE%E6%A8%99">今回の目標</a></h2>
<p>今回の目標はcrieitの全タイトルと記事URLの取得とします。</p>
<h2 id="ライブラリの導入"><a href="#%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%E5%B0%8E%E5%85%A5">ライブラリの導入</a></h2>
<p>何はともあれライブラリを導入します。</p>
<pre><code>from bs4 import BeautifulSoup
import requests
</code></pre>
<h2 id="記事一覧ページの確認"><a href="#%E8%A8%98%E4%BA%8B%E4%B8%80%E8%A6%A7%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E7%A2%BA%E8%AA%8D">記事一覧ページの確認</a></h2>
<p>crieitの記事一覧は、https://crieit.net/posts?page=1 という記載になっています。<br />
つまり、=1の分割すれば良さそうです。</p>
<pre><code>base_url = "https://crieit.net/posts?page="
num = 1
</code></pre>
<h2 id="whileでループ処理"><a href="#while%E3%81%A7%E3%83%AB%E3%83%BC%E3%83%97%E5%87%A6%E7%90%86">whileでループ処理</a></h2>
<p>次にwhileでループ処理をします。<br />
+ ループが終わればnumに1を足す。<br />
+ 所得したtextの長さが0ならループを抜ける</p>
<p>これで動きそうです。</p>
<pre><code>while num <= 100:
url=base_url+ str(num)
r = requests.get(url)
soup = BeautifulSoup(r.text)
titles =soup.select("h5 a")
if len(titles) == 0:
print("これ以上記事はありません")
break
num += 1
</code></pre>
<p>str(num)でnumを文字列に変換しています。<br />
len(titles)は、titlesの長さを確認します。</p>
<h2 id="完成したコード"><a href="#%E5%AE%8C%E6%88%90%E3%81%97%E3%81%9F%E3%82%B3%E3%83%BC%E3%83%89">完成したコード</a></h2>
<pre><code>from bs4 import BeautifulSoup
import requests
base_url = "https://crieit.net/posts?page="
num = 1
while num <= 100:
url=base_url+ str(num)
r = requests.get(url)
soup = BeautifulSoup(r.text)
titles =soup.select("h5 a")
if len(titles) == 0:
print("これ以上記事はありません")
break
num += 1
for title in titles:
print(title.text)
</code></pre>
<h2 id="動くサンプル"><a href="#%E5%8B%95%E3%81%8F%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB">動くサンプル</a></h2>
<p><a target="_blank" rel="nofollow noopener" href="https://colab.research.google.com/drive/1b8yzaGchdQKOwbA1QxQ7_hoVx3pmI12w?hl=ja#scrollTo=5-VAsYl4WkJ5">Python3</a></p>
aocory
tag:crieit.net,2005:PublicArticle/14844
2019-02-28T16:18:29+09:00
2019-02-28T16:18:29+09:00
https://crieit.net/posts/BeautifulSoup-python
BeautifulSoup入門 スクレイピング実践編 タイトルとリンク取得まで【python】
<h2 id="スクレイピングをしたい"><a href="#%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0%E3%82%92%E3%81%97%E3%81%9F%E3%81%84">スクレイピングをしたい</a></h2>
<p>Webサイトから情報をまとめてCSVでごにょごにょしたいなどにスクレイピングは便利です。<br />
今回は、Pythonのスクレイピングによく使われるBeautifulSoupを使って勉強していきます。<br />
BeautifulSoupには便利な機能がたくさんあります。<br />
今回も<a href="https://crieit.net/">crieit</a>さんからデータを抜いていきます。(制作者のdalaさんには了解済み)</p>
<h2 id="今回の目標"><a href="#%E4%BB%8A%E5%9B%9E%E3%81%AE%E7%9B%AE%E6%A8%99">今回の目標</a></h2>
<p>今回の目標はタイトルと記事URLの取得とします。</p>
<h2 id="ライブラリの導入"><a href="#%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%E5%B0%8E%E5%85%A5">ライブラリの導入</a></h2>
<p>BeautifulSoup単体ではURLをからデータを持ってこれません。<br />
requestsを併用します。</p>
<pre><code>from bs4 import BeautifulSoup
import requests
</code></pre>
<h2 id="Requestsを使って、webからデータを取得"><a href="#Requests%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%80%81web%E3%81%8B%E3%82%89%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%8F%96%E5%BE%97">Requestsを使って、webからデータを取得</a></h2>
<p>requestsを使用してデータを持ってきます。</p>
<pre><code>url = "https://crieit.net/"
r = requests.get(url)
</code></pre>
<h2 id="BeautifulSoupで要素を整形する"><a href="#BeautifulSoup%E3%81%A7%E8%A6%81%E7%B4%A0%E3%82%92%E6%95%B4%E5%BD%A2%E3%81%99%E3%82%8B">BeautifulSoupで要素を整形する</a></h2>
<p>つぎにBeautifulSoupで要素を整形する</p>
<pre><code>soup = BeautifulSoup(r.text)
</code></pre>
<h2 id="crieitの記事タイトルの中身を確認"><a href="#crieit%E3%81%AE%E8%A8%98%E4%BA%8B%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E7%A2%BA%E8%AA%8D">crieitの記事タイトルの中身を確認</a></h2>
<p>抜きたいデータはタイトルとURLですのでその箇所の要素を確認します。</p>
<pre><code><h5 class="card-title">
<a href="https://crieit.net/posts/Tilemap-5c73afa5127c1">Tilemapからミニマップを作成してみた①</a>
</h5>
</code></pre>
<p>取り方としては<br />
+ h5タグで絞り込む<br />
+ classで絞り込む</p>
<p>とかでなんとかなりそうです。</p>
<h2 id="soup.find_all"><a href="#soup.find_all">soup.find_all</a></h2>
<p>試しにsoup.find_allで値を取得してみましょう。</p>
<pre><code>titles =soup.find_all("h5")
print(titles)
</code></pre>
<pre><code>[<h5 class="card-title">クロス投稿可能</h5>, <h5 class="card-title">自由に投稿</h5>, ]
</code></pre>
<p>のように配列で渡されてきました。これでは視認性が悪いです。forで表示してみましょう。</p>
<pre><code>for title in titles:
print(title)
</code></pre>
<p>すると</p>
<pre><code><h5 class="card-title">Nuxt.js+ExpressのプロジェクトをTypeScript化する</h5>
<h5 class="card-title">Firestoreの参照型によるリレーションを試す</h5>
<h5 class="card-title"><a href="https://crieit.net/posts/Tilemap-5c73afa5127c1">Tilemapからミニマップを作成してみた①</a></h5>
<h5 class="card-title"><a href="https://crieit.net/posts/BeautifulSoup-soup">BeautifulSoup入門 soup.の挙動を確認する</a></h5>
</code></pre>
<p>のように出力されます。aタグで拾ってきた方が良さそうです。</p>
<h2 id="soup.selectを使う"><a href="#soup.select%E3%82%92%E4%BD%BF%E3%81%86">soup.selectを使う</a></h2>
<p>そこでsoup.selectを使うとCSSセレクタで抽出ができます。</p>
<pre><code>titles =soup.select("h5 a")
print(titles)
for title in titles:
print(title.text)
link = title.get("href")
print(link)
</code></pre>
<p>これで無事</p>
<pre><code>Tilemapからミニマップを作成してみた①
[https://crieit.net/posts/Tilemap-5c73afa5127c1](https://crieit.net/posts/Tilemap-5c73afa5127c1)
BeautifulSoup入門 soup.の挙動を確認する
[https://crieit.net/posts/BeautifulSoup-soup](https://crieit.net/posts/BeautifulSoup-soup)
BeautifulSoup入門 HTMLを取得して表示する【Python】
[https://crieit.net/posts/BeautifulSoup-HTML-Python](https://crieit.net/posts/BeautifulSoup-HTML-Python)
</code></pre>
<p>のようにキチンと取得できました。</p>
<h2 id="動くサンプル"><a href="#%E5%8B%95%E3%81%8F%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB">動くサンプル</a></h2>
<p><a target="_blank" rel="nofollow noopener" href="https://colab.research.google.com/drive/1b8yzaGchdQKOwbA1QxQ7_hoVx3pmI12w?hl=ja#scrollTo=5-VAsYl4WkJ5">Python3</a></p>
aocory
tag:crieit.net,2005:PublicArticle/14843
2019-02-28T16:12:13+09:00
2019-02-28T16:12:13+09:00
https://crieit.net/posts/BeautifulSoup-HTML-python-5c7789cd8613e
BeautifulSoup入門 スクレイピング実践編 HTML取得まで【python】
<h2 id="スクレイピングをしたい"><a href="#%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0%E3%82%92%E3%81%97%E3%81%9F%E3%81%84">スクレイピングをしたい</a></h2>
<p>Webサイトから情報をまとめてCSVでごにょごにょしたいなどにスクレイピングは便利です。<br />
今回は、Pythonのスクレイピングによく使われるBeautifulSoupを使って勉強していきます。<br />
BeautifulSoupには便利な機能がたくさんあります。<br />
今回は<a href="https://crieit.net/">crieit</a>さんからデータを抜いていきます。(制作者のdalaさんには了解済み)</p>
<h2 id="ライブラリの導入"><a href="#%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%E5%B0%8E%E5%85%A5">ライブラリの導入</a></h2>
<p>BeautifulSoup単体ではURLをからデータを持ってこれません。<br />
requestsを併用します。</p>
<pre><code>from bs4 import BeautifulSoup
import requests
</code></pre>
<h2 id="Requestsを使って、webからデータを取得"><a href="#Requests%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%80%81web%E3%81%8B%E3%82%89%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%8F%96%E5%BE%97">Requestsを使って、webからデータを取得</a></h2>
<p>requestsを使用してデータを持ってきます。</p>
<pre><code>url = "https://crieit.net/"
r = requests.get(url)
</code></pre>
<h2 id="BeautifulSoupで要素を整形する"><a href="#BeautifulSoup%E3%81%A7%E8%A6%81%E7%B4%A0%E3%82%92%E6%95%B4%E5%BD%A2%E3%81%99%E3%82%8B">BeautifulSoupで要素を整形する</a></h2>
<p>つぎにBeautifulSoupで要素を整形する</p>
<pre><code>soup = BeautifulSoup(r.text)
</code></pre>
<h2 id="出力してみる"><a href="#%E5%87%BA%E5%8A%9B%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B">出力してみる</a></h2>
<p>出力してみましょう。<br />
今回は生のHTMLを吐き出します。</p>
<pre><code>print(soup.prettify())
</code></pre>
<h2 id="今回のコード"><a href="#%E4%BB%8A%E5%9B%9E%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89">今回のコード</a></h2>
<pre><code>from bs4 import BeautifulSoup
import requests
url = "https://crieit.net/"
r = requests.get(url)
soup = BeautifulSoup(r.text)
print(soup.prettify())
</code></pre>
<h2 id="今回のまとめ"><a href="#%E4%BB%8A%E5%9B%9E%E3%81%AE%E3%81%BE%E3%81%A8%E3%82%81">今回のまとめ</a></h2>
<p>とりあえず、HTMLとるとこまでいけました。<br />
次回は、タイトル全部抜いていきたいと思います。</p>
<h2 id="動くサンプル"><a href="#%E5%8B%95%E3%81%8F%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB">動くサンプル</a></h2>
<p><a target="_blank" rel="nofollow noopener" href="https://colab.research.google.com/drive/1b8yzaGchdQKOwbA1QxQ7_hoVx3pmI12w?hl=ja#scrollTo=5-VAsYl4WkJ5">Python3</a></p>
aocory
tag:crieit.net,2005:PublicArticle/14842
2019-02-28T08:46:07+09:00
2019-02-28T08:46:07+09:00
https://crieit.net/posts/BeautifulSoup-soup
BeautifulSoup入門 soup.の挙動を確認する
<h2 id="スクレイピングをしたい"><a href="#%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0%E3%82%92%E3%81%97%E3%81%9F%E3%81%84">スクレイピングをしたい</a></h2>
<p>Webサイトから情報をまとめてCSVでごにょごにょしたいなどにスクレイピングは便利です。<br />
今回は、Pythonのスクレイピングによく使われるBeautifulSoupを使って勉強していきます。<br />
BeautifulSoupには便利な機能がたくさんあります。今回は、それをまとめておきます。</p>
<h2 id="tagの名前を表示"><a href="#tag%E3%81%AE%E5%90%8D%E5%89%8D%E3%82%92%E8%A1%A8%E7%A4%BA">tagの名前を表示</a></h2>
<p>BeautifulSoupでtagの名前を表示するには</p>
<pre><code>print(soup.title.name)
</code></pre>
<p>と記載します。</p>
<h2 id="titleタグで囲まれた文字列を表示"><a href="#title%E3%82%BF%E3%82%B0%E3%81%A7%E5%9B%B2%E3%81%BE%E3%82%8C%E3%81%9F%E6%96%87%E5%AD%97%E5%88%97%E3%82%92%E8%A1%A8%E7%A4%BA">titleタグで囲まれた文字列を表示</a></h2>
<p>BeautifulSoupでtagの名前を表示するには</p>
<pre><code>print(soup.title.string)
</code></pre>
<p>と記載します。</p>
<h2 id="titleタグの親要素を表示"><a href="#title%E3%82%BF%E3%82%B0%E3%81%AE%E8%A6%AA%E8%A6%81%E7%B4%A0%E3%82%92%E8%A1%A8%E7%A4%BA">titleタグの親要素を表示</a></h2>
<p>BeautifulSoupでtagの名前を表示するには</p>
<pre><code>print(soup.title.parent.name)
</code></pre>
<p>と記載します。</p>
<h2 id="<p>タグで囲まれた部分を表示"><a href="#%26lt%3Bp%26gt%3B%E3%82%BF%E3%82%B0%E3%81%A7%E5%9B%B2%E3%81%BE%E3%82%8C%E3%81%9F%E9%83%A8%E5%88%86%E3%82%92%E8%A1%A8%E7%A4%BA"><p>タグで囲まれた部分を表示</a></h2>
<p>BeautifulSoupでtagの名前を表示するには</p>
<pre><code>print(soup.p)
</code></pre>
<p>と記載します。</p>
<h2 id="<p>タグのクラス名を取得"><a href="#%26lt%3Bp%26gt%3B%E3%82%BF%E3%82%B0%E3%81%AE%E3%82%AF%E3%83%A9%E3%82%B9%E5%90%8D%E3%82%92%E5%8F%96%E5%BE%97"><p>タグのクラス名を取得</a></h2>
<p>BeautifulSoupでtagの名前を表示するには</p>
<pre><code>print(soup.p['class'])
</code></pre>
<p>と記載します。</p>
<h2 id="<a>タグの最初の一つを取得"><a href="#%26lt%3Ba%26gt%3B%E3%82%BF%E3%82%B0%E3%81%AE%E6%9C%80%E5%88%9D%E3%81%AE%E4%B8%80%E3%81%A4%E3%82%92%E5%8F%96%E5%BE%97"><a>タグの最初の一つを取得</a></h2>
<p>BeautifulSoupでtagの名前を表示するには</p>
<pre><code>print(soup.a)
</code></pre>
<p>と記載します。</p>
<h2 id="<a>タグ全てを取得"><a href="#%26lt%3Ba%26gt%3B%E3%82%BF%E3%82%B0%E5%85%A8%E3%81%A6%E3%82%92%E5%8F%96%E5%BE%97"><a>タグ全てを取得</a></h2>
<p>BeautifulSoupでtagの名前を表示するには</p>
<pre><code>print(soup.find_all('a'))
</code></pre>
<p>と記載します。</p>
<h2 id="idを検索"><a href="#id%E3%82%92%E6%A4%9C%E7%B4%A2">idを検索</a></h2>
<p>BeautifulSoupでtagの名前を表示するには</p>
<pre><code>print(soup.find(id="link3"))
</code></pre>
<p>と記載します。</p>
<h2 id="完成したコード"><a href="#%E5%AE%8C%E6%88%90%E3%81%97%E3%81%9F%E3%82%B3%E3%83%BC%E3%83%89">完成したコード</a></h2>
<pre><code>html_doc = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
"""
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc)
#tagの名前を表示
print(soup.title.name)
#titleタグで囲まれた文字列を表示
print(soup.title.string)
#titleタグの親要素を表示
print(soup.title.parent.name)
#<p>タグで囲まれた部分を表示
print(soup.p)
# <p class="title"><b>The Dormouse's story</b></p>
#<p>タグのクラス名を取得
print(soup.p['class'])
#<a>タグの最初の一つを取得
print(soup.a)
#<a>タグ全てを取得
print(soup.find_all('a'))
#idを検索
print(soup.find(id="link3"))
</code></pre>
<h2 id="動くサンプル"><a href="#%E5%8B%95%E3%81%8F%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB">動くサンプル</a></h2>
<p><a target="_blank" rel="nofollow noopener" href="https://colab.research.google.com/drive/1b8yzaGchdQKOwbA1QxQ7_hoVx3pmI12w?hl=ja#scrollTo=5-VAsYl4WkJ5">Python3</a></p>
aocory