前提・実現したいこと
スクレイピングした2つの情報を、2列のcsvファイルに出力したいです。
name adress
A ..@...
B //@///
c ¥¥¥@¥¥¥
のようにcsvファイルに出力したいです。
発生している問題・エラーメッセージ
現在書いているコードだと、1列しか出力されません。。(下の画像)
該当のソースコード
python
1# マイナビ転職 メールアドレス スクレイピング 2from bs4 import BeautifulSoup 3from selenium import webdriver 4import requests 5from urllib.parse import urljoin 6import time 7import pandas as pd 8import csv 9 10url_list = [] 11adress_list = [] 12 13for n in range(1, 2): 14 url = f"https://tenshoku.mynavi.jp/search/list/?pageNum={n}" 15 16 res = requests.get(url) 17 res.raise_for_status() 18 soup = BeautifulSoup(res.text, "html.parser") 19 for i in soup.find_all("a", class_='linkArrowS', text="詳細を見る"): 20 elem = urljoin(url, i.get("href")).replace("/msg/", "/") 21 22 # url_listに格納 23 url_list.append(elem) 24 25 26driver = webdriver.Chrome(executable_path='chromedriver') 27for m in url_list: 28 driver.get(m) 29 res = requests.get(m) 30 res.raise_for_status() 31 time.sleep(1) 32 soup = BeautifulSoup(res.text, "html.parser") 33 for x in driver.find_elements_by_css_selector("td.email"): 34 adress = x.find_element_by_tag_name("a").get_attribute("href").split(":")[1] 35 # 配列に格納 36 adress_list.append(adress) 37 for y in driver.find_elements_by_css_selector("body > div.wrapper > div.container > div:nth-child(1) > div.cassetteOfferRecapitulate > div:nth-child(2) > p.text"): 38 title = y.text.split("|")[0] 39 # 配列に格納 40 adress_list.append(title) 41 42 43 44df = pd.DataFrame(adress_list) 45df.to_csv('./mynav_mail.csv', quoting=csv.QUOTE_NONE,) 46 47
試したこと
2次元配列に格納してcsvにすれば解決できるのかなと思いましたが、どうやって2次元配列に格納するのかわからなかったためここで質問するに至りました。
初歩的なことかもしれませんが、ご教授お願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。