souwasora
@souwasora (takei souwa)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

python seleniumデータがあったりなかったりする場合

解決したいこと

最近seleniumの勉強を始め、適当に求人サイトの会社名を取り出して、Googleで検索かけて電話番号と会社の住所を取得を考えております。
しかし、会社名を検索かけてもGoogleに出てこない場合があります。
出てこない場合↓を取ってくることができないのでエラーになる

elem = browser.find_element_by_id('rhs')

①出てくる場合 (問題なし)
スクリーンショット 2022-11-04 0.03.08.png

②出てこない場合(エラーになり解決したい)
スクリーンショット 2022-11-04 0.04.58.png

③電話番号だけ出てこない場合(エラーになり解決したい)
スクリーンショット 2022-11-04 0.07.03.png

解決方法を教えてください

発生している問題・エラー

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)

または、問題・エラーが起きている画像をここにドラッグアンドドロップ
②の場合のエラー
スクリーンショット 2022-11-04 0.12.28.png

③の場合のエラー
printしなければいい話ではある
スクリーンショット 2022-11-04 0.16.15.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

1Answer

Your answer might help someone💌