python seleniumデータがあったりなかったりする場合
解決したいこと
最近seleniumの勉強を始め、適当に求人サイトの会社名を取り出して、Googleで検索かけて電話番号と会社の住所を取得を考えております。
しかし、会社名を検索かけてもGoogleに出てこない場合があります。
出てこない場合↓を取ってくることができないのでエラーになる
elem = browser.find_element_by_id('rhs')
解決方法を教えてください
発生している問題・エラー
AttributeError Traceback (most recent call last)
Input In [8], in <cell line: 3>()
17 sleep(10)
18 print(key_word)
---> 19 print(phone_number.text)
20 else:
21 elem = elem
AttributeError: 'list' object has no attribute 'text'
---------------------------------------------------------------------------
NoSuchElementException Traceback (most recent call last)
Input In [10], in <cell line: 3>()
7 browser.get(url)
8 #電話番号取得
9 #elem = browser.find_element_by_id('rhs'):
10 #elem = soup.find_all('div', attrs={'class': 'TQc1id rhstc5 N4Xssf'})
---> 11 elem = browser.find_element_by_id('rhs')
12 if elem:
13 phone_number = elem.find_elements_by_xpath('//*[@id="kp-wp-tab-overview"]/div[1]/div/div/div/div/div/div[7]')![スクリーンショット 2022-11-04 0.10.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1816675/31670b86-81e5-ba87-ea0a-3173eeb8af4f.png)
または、問題・エラーが起きている画像をここにドラッグアンドドロップ
②の場合のエラー
該当するソースコード
import pandas
import requests
import time
from bs4 import BeautifulSoup
import csv
import pandas as pd
from webdriver_manager.chrome import ChromeDriverManager
from selenium import webdriver
from time import sleep
browser = webdriver.Chrome(ChromeDriverManager().install())
#タウンワーク
url = 'https://townwork.net/tokyo/ct_sa52102/'
browser.get(url)
res = requests.get(url)
#parser = 分割的な意味
soup = BeautifulSoup(res.text, 'html.parser',from_encoding='utf-8')
#soup
#タウンワークのタイトル取得
title = soup.find_all('h3', attrs={'class': 'job-lst-main-ttl-txt'})
lists = []
for list in title:
list = list.text
list = list.strip()
list = list.replace("\u3000", '')
lists.append(list)
phone_numbers = []
titles = []
#先程抽出したタイトル
for title in lists:
titles.append(title)
#URLの末尾に追加するために変数に代入
key_word = title
url = 'https://www.google.com/search?q=' + key_word
browser.get(url)
#電話番号取得
#soup使うか迷ってる
#elem = soup.find_all('div', attrs={'class': 'TQc1id rhstc5 N4Xssf'})
#②のエラー表示されないと抽出できなくてエラーになる
elem = browser.find_element_by_id('rhs')
if elem:
phone_number = elem.find_elements_by_xpath('//*[@id="kp-wp-tab-overview"]/div[1]/div/div/div/div/div/div[7]')
for c in phone_number:
phone_number = c.text
phone_numbers.append(phone_number)
sleep(10)
else:
elem = elem
自分で試したこと
ここに問題・エラーに対して試したことを記載してください。
今回の場合↓以下のデータを抽出できない場合は空白or飛ばす
という処理を実施させたい。。しかし今の私だと正解が浮かんできません、。
ご教示おねがいします
elem = browser.find_element_by_id('rhs')
0