[Take0] とりあえず、リンクタグ(href)を抜き出す。
【書式】
値=要素.get("属性名")
例)
属性名:a
値=要素.get("属性名")
例)
属性名:a
【コード】
import requests
from bs4 import BeautifulSoup
# webページを取得して解析する
response=requests.get(load_url)
soup=BeautifulSoup(response.content,"html.parser").find(class_="entry-content hatenablog-entry")
# classで検索して、その中の全てのaタグを検索して表示する。
for element in soup.find_all("a"):
print("タグ:",element)
print("タグのデータ型:",type(element))
print("タグのテキスト:",element.text)
url=element.get("href")
print("リンク:",url)
print("\n")
【結果】
タグのデータ型: <class 'bs4.element.Tag'>
タグのテキスト: リンク1
タグ: <a href="../../../2021/02/07/000000">リンク2</a>
タグのデータ型: <class 'bs4.element.Tag'>
タグのテキスト: リンク2
リンク: ../../../2021/02/07/000000
# 元HTML
<div class="entry-content hatenablog-entry">
<p> </p>
<div id="chap1">
<h2 id="第1章-小旅行の行先検討">第1章 小旅行の行先検討</h2>
<ol>
<li>近場が良いか?</li>
<li>温泉が良いか?</li>
<li>電車か車か?</li>
</ol>
</div>
<div id="chap2">
<h2 id="第2章-到着したら科飯にしよう">第2章 到着したら科飯にしよう</h2>
<ol>
<li>早速のお食事</li>
<li>まずは、眺めて楽しもう</li>
<li>お上品に食べ進めよう</li>
<li>お酒はほどほどに!</li>
</ol>
</div>
<p>
<a href="https://20200105.hatenadiary.jp/entry/2021/05/02/000000">リンク1</a>
<a href="../../../2021/02/07/000000">リンク2</a>
<br/><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hwk159/20200614/20200614142330.jpg"/>
<img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hwk159/20200614/20200614142318.jpg"/>
<img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hwk159/20200614/20200614142307.jpg"/>
</p>
</div>
[Take1] 相対URLがまざっているので、を絶対URLに変換する
【書式】
urllibライブラリを使用する。
書式)
parse.urljoin(ベースURL,調べるURL)
【コード】
import requests
from bs4 import BeautifulSoup
import urllib
# webページを取得して解析する
response=requests.get(load_url)
soup=BeautifulSoup(response.content,"html.parser").find(class_="entry-content hatenablog-entry")
# 全てのaタグを検索して、リンクを絶対URLで表示する。
for element in soup2.find_all("a"):
print("タグ:",element)
print("タグのデータ型:",type(element))
print("タグのテキスト:",element.text)
url=element.get("href")
print("リンク:",url)
# 相対URLを書き換え
link_url=urllib.parse.urljoin(load_url,url)
print("補正後URL:",link_url)
print("\n")
【結果】
タグのデータ型: <class 'bs4.element.Tag'>
タグのテキスト: リンク1
タグ: <a href="../../../2021/02/07/000000">リンク2</a>
タグのデータ型: <class 'bs4.element.Tag'>
タグのテキスト: リンク2
リンク: ../../../2021/02/07/000000
戻り値を整理しておく。
[Take2] このリンクのリストをテキストファイルに書き出してみる。
【書式】
f=open(filename,mode="w")
f.write(書き込む値)
f.close()
【コード】
import requests
from bs4 import BeautifulSoup
import urllib
# webページを取得して解析する
response=requests.get(load_url)
soup=BeautifulSoup(response.content,"html.parser").find(class_="entry-content hatenablog-entry")
# ファイルを書き込みモードで開く
with open(filename,"w") as f:
# 全てのaタグを検索し、リンクを絶対URLで書き出す
for element in soup.find_all("a"):
url=element.get("href")
link_url=urllib.parse.urljoin(load_url,url)
f.write(element.text+"\n")
f.write(link_url+"\n")
f.write("\n")
【結果】