前提・実現したいこと
Beautiful soupでhref属性の値を取得してCSVで出力したいのですがうまくいきません。
CSVの出力はできており、取得がうまくいっていないのだと思います。
発生している問題
sampleHTML
<a class="hoge" href="http://sample.com/url1.html">
<a class="hoge" href="http://sample.com/url2.html">
<a class="hoge" href="http://sample.com/url3.html">
import requests from bs4 import BeautifulSoup import pandas as pd from google.colab import files url = 'http://sample.com/' req = requests.get(url) soup= BeautifulSoup(req.content, 'html.parser') # aタグの中から、class=hogeの含まれたものを取得 tags = soup.find_all("a", {"class": "hoge"}) # データフレームを作成。 columns = ["link"] df = pd.DataFrame(columns=columns) # 抽出した要素を行列に入れ込む for tag in tags: link = tag.get("href") se = pd.Series([link], columns) print(se) df = df.append(se, columns) # CSVに出力 filename = "hogehoge.csv" # ファイル名の指定 df.to_csv(filename, encoding = 'utf-8') #csvへの変換、encoding指定(おまじない) files.download(filename) # ダウンロード
### 問題と思われる箇所
tags = soup.find_all("a", {"class": "hoge"})
for tag in tags:
link = tag.get("href")
試したこと
links = [link.get('href') for link in soup.find_all(class_='hoge')]
この形だと取得できたのですが、行列に入れ込むために書き換えると取得できなくなりました。
問題のコードではaタグも指定していますが、クラスとhref属性だけで取得できそうです。
補足情報(FW/ツールのバージョンなど)
google colaboratoryを使用しています
回答1件
あなたの回答
tips
プレビュー