前回、Webサイトからのスクレイピング&CSV出力についてご質問をさせていただき、ご回答いただいたお方のお陰で、とりあえずは1つの要素のみCSV出力できるようになったのですが、残りの4つの要素のCSV出力方法が分かりません。調べたところ、取得したい要素をそれぞれ一行で記述する必要があることまでは分かり、いろいろと試しているのですが上手く行きません。
勉強を始めたばかりで頓珍漢なご質問になるかもしれませんが、どうぞよろしくお願いいたします。
○ 情報収集したいサイトは以下になります。
リンク(Bird Fanのサイト)
○ 取得してCSVに展開したい情報
<h2><h3><h4><p><a href=">の5つです。 以下のように1行ずつ書き出し出来るようにしたいです。=================
フォトギャラリー野鳥図鑑(身近な鳥) (←h2)
身近な鳥(スズメ大) (←h3)
スズメ (←h4)
スズメ目ハタオリドリ科 (←p)
全長:14.5cm 翼開長::22.5cm (←p)
人家付近でのみ見られる。ほおに黒い斑(幼鳥ではうすい) (←p)
"/pg/kind/ord17/fam1727/spe172702/" (←a href=" ※フルURL表示でも可)
=================
自分なりに調べて、試行錯誤で以下を実行したのですが、<h4>の情報だけ3行も出力されてしまい行き詰っております。
更に、調べ方が足りないのかもしれませんが<a href=">を出力するコマンド(記述)が分かりません。
html
1mport csv 2import requests 3import bs4 4 5res = requests.get('https://www.birdfan.net/gallery/library/sanya_mijika.html#01') 6res.encoding = res.apparent_encoding 7soup = bs4.BeautifulSoup(res.text, "html.parser") 8elems = soup.find_all('h2') 9elems = soup.find_all('h3') 10elems = soup.find_all('h4') 11for elem in elems: 12 with open(r'C:\Users\8080A\Desktop\bird.csv','w') as csvfile: 13 writer = csv.writer(csvfile, lineterminator='\n') 14 writer.writerow([str(elem).replace("<h2>","").replace("</h2>","") for elem in elems]) 15 writer.writerow([str(elem).replace("<h3>","").replace("</h3>","") for elem in elems]) 16 writer.writerow([str(elem).replace("<h4>","").replace("</h4>","") for elem in elems])
大変恐れ入りますが、どうぞよろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/09 17:15
2019/01/10 00:19