前提・実現したいこと
下記のソースコードにて、スクレイピングをしています。
複数のページを開く中で、
メールアドレスがあるサイトでは「企業名とメールアドレス」
メールアドレスがないサイトでは「企業名とNone」
と出力したいと考えています。
しかし、今のコードでは
driver.find_elements_by_css_selector("td.email")
の要素がなかった時、処理が飛ばされてNoneが格納されません。
どなたかご教授お願い致します。
発生している問題・エラーメッセージ
該当のソースコード
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 # 企業名ゲット 34 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"): 35 title = y.text.split("|")[0] 36 # 配列に格納 37 adress_list.append(title) 38 # アドレスゲット 39 for x in driver.find_elements_by_css_selector("td.email"): 40 if x == []: 41 adress_list.append("None") 42 else: 43 adress = x.find_element_by_tag_name("a").get_attribute("href").split(":")[1] 44 # 配列に格納 45 adress_list.append(adress)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/17 09:22