Python selenium 同じclass名
解決したいこと
最近seleniumの勉強を始め、適当に求人サイトの会社名を取り出して、Googleで検索かけて会社の住所を取得を考えております。
しかし、電話番号と住所のclassが一致してる部分があり
同時に取得できてしまいます。
解決したい事として
①同時に取得した電話番号、住所をappendする際に別々の配列に入れる
②会社の住所だけ取得したいので、何か方法を考える
adres = browser.find_elements_by_class_name('LrzXr')
発生している問題・エラー
〒150-0001 東京都渋谷区神宮前2丁目33−16 #601
03-6459-2001
が取得できてしまっている
#画像の取得してるものとは違いますあくまでも二つ取れてしまうこと
該当するソースコード
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())
# Steam
url = 'https://townwork.net/joSrchRsltList/?sac=52102&jc=001&emc=01&emc=06&page=1'
browser.get(url)
res = requests.get(url)
#parser = 分割的な意味
soup = BeautifulSoup(res.text, 'html.parser',from_encoding='utf-8')
page_count = 1
page = soup.find_all('ol', attrs={'class': 'pager-number'})
p = soup.find('span', attrs={'class': 'hit-num'})
p = int(p.text.replace(',',''))
p = -(-p // 30)
lists = []
adress = []
while True:
res = requests.get(url)
soup = BeautifulSoup(res.text, 'html.parser',from_encoding='utf-8')
title = soup.find_all('h3', attrs={'class': 'job-lst-main-ttl-txt'})
click = browser.find_element_by_class_name('job-lst-main-btn-wrap')
click.click()
adres = browser.find_elements_by_xpath('//*[@id="js-detailArea"]/div[10]/div/dl[3]/dd/p')
for d in adres:
d = d.text
adress.append(d)
browser.back()
for list in title:
list = list.text
list = list.strip()
list = list.replace("\u3000", '')
lists.append(list)
page_count += 1
time.sleep(5)
url = 'https://townwork.net/joSrchRsltList/?sac=52102&jc=001&emc=01&emc=06&page=' + str(page_count)
browser.get(url)
if page_count > 1:
break
#except TimeoutException:
print('pageの読み込みを終了しました')
phone_numbers = []
titles = []
adress = []
for title in lists:
titles.append(title)
key_word = title
url = 'https://www.google.com/search?q=' + key_word +'電話番号'
browser.get(url)
#電話番号取得
if browser.find_elements_by_class_name('X0KC1c'):
phone_number = browser.find_elements_by_class_name('X0KC1c')
#同時に取れてしまう
adres = browser.find_elements_by_class_name('LrzXr')
for d in adres:
adres = d.text
adress.append(adres)
for c in phone_number:
phone_number = c.text
phone_numbers.append(phone_number)
sleep(5)
print(key_word)
print(phone_numbers)
print(adress)
else:
phone_numbers.append('')
adress.append('')
自分で試したこと
住所だけ取得したいです
配列の1個目を取得の[0]などしましたけど、取得できず
get_attribute('aria-label')
なども試しました。。
ご教示お願いします
0