前提・実現したいこと
pythonのCSSセレクタを用いて旅行サイトよりイベント名、「期間」、「場所」の3項目をスクレイピングしたい。
発生している問題・現在の出力内容
pythonでURLの情報をスクレイピングしようとしているのですが、対象の型がNoneTypeでスクレイピングできない。
旅行サイトよりイベント名、期間、場所の3項目をスクレイピングしようとしており、イベント名まではスクレイピング出来たのですが、例えば「期間:11月25日」と書いているようなものをスクレイピングしようとした時、NoneTypeと表示されスクレイピングできない
現在の出力内容 .... じゃらん PRODUCED BY RECRUIT > //www.jalan.net None > https://golf-jalan.net/?vos=cpjgfprocap0121113001 第8回大阪マラソン〜OSAKA MARATHON 2018〜 > //www.jalan.net/event/evt_224744/ ドイツ・クリスマスマーケット大阪 > //www.jalan.net/event/evt_227109/ 大阪・光の饗宴2018 OSAKA光のルネサンス2018 > //www.jalan.net/event/evt_228820/ 大阪・光の饗宴2018 御堂筋イルミネーション2018 > //www.jalan.net/event/evt_227312/ 大阪天満宮 初詣 > //www.jalan.net/event/evt_229995/ 住吉大社 初詣 > //www.jalan.net/event/evt_229997/ 今宮戎神社 十日戎 > //www.jalan.net/event/evt_229986/ 初天神梅花祭 > //www.jalan.net/event/evt_229991/ ....
該当のソースコード
pyhton
1from bs4 import BeautifulSoup 2import urllib.request as req 3 4url = "https://www.jalan.net/event/270000/" 5res = req.urlopen(url) 6soup = BeautifulSoup(res, "html.parser") 7 8li_list = soup.select("div p")#divより下のクラスpをセレクト 9 10for li in li_list: #URL内liに含まれるli_list回るまでループ、ループする範囲を広げてては? 11 a = li.a 12 #checka = type(a) 13 #print(checka) 14 if a != None: 15 name = a.string 16 href = a.attrs["href"] 17 print(name, ">", href) 18 19 dl_list = soup.select("dl dd") 20 dd = li.dd 21 #check = type(dd) 22 #print(check) 23 if dd != None: 24 name1 = dd.string 25 print(name1) 26
試したこと
対象がスクレイピング出来なかったため、type()で型を調べたところNoneTypeと返ってきた。
補足情報(FW/ツールのバージョンなど)
スクレイピングするURL:https://www.jalan.net/event/270000/
(例)
...
大阪マラソン2018 (イベント名 スクレイピング成功済み)
期間:11月25日 (NoneTypeと表示された)
場所:大阪市 大阪城公園前 (NoneTypeと表示された)
...
回答1件
あなたの回答
tips
プレビュー