前提・実現したいこと
bs4,soupだと処理が遅いので、seleniumを使って、下のサイト内にあるリンクをクリックしたいです。
https://tenshoku.mynavi.jp/jobinfo-127282-1-22-1/msg/
beautifulSoup,requestsを使ってはできたのですが、seleniumを使ってやりたいと考えています。
(処理を繰り返し行うため、速度を早めたい。)
ただ、taeget属性しかありません。
XPath、リンクの一部一致の取得でやってみましたがうまくいきませんでした。。
どなたかご教授お願いいたします。。
target = driver.find_element_by_xpath('/html/body/div[1]/div[6]/div[2]/div/section[4]/div/table/tbody/tr[9]/td/a') target.click()
target = driver.find_elements_by_partial_link_text('リンクテキスト') target.click()
発生している問題・エラーメッセージ
Traceback (most recent call last): File "minav_scorp-1.py", line 33, in <module> target = driver.find_element_by_xpath('/html/body/div[1]/div[6]/div[2]/div/section[4]/div/table/tbody/tr[9]/td/a') File "/Users/yudai/opt/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 394, in find_element_by_xpath return self.find_element(by=By.XPATH, value=xpath) File "/Users/yudai/opt/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 978, in find_element 'value': value})['value'] File "/Users/yudai/opt/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute self.error_handler.check_response(response) File "/Users/yudai/opt/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div[1]/div[6]/div[2]/div/section[4]/div/table/tbody/tr[9]/td/a"} (Session info: chrome=78.0.3904.70)
Traceback (most recent call last): File "minav_scorp-1.py", line 33, in <module> target = driver.find_element_by_partial_link_text('http') File "/Users/yudai/opt/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 462, in find_element_by_partial_link_text return self.find_element(by=By.PARTIAL_LINK_TEXT, value=link_text) File "/Users/yudai/opt/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 978, in find_element 'value': value})['value'] File "/Users/yudai/opt/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute self.error_handler.check_response(response) File "/Users/yudai/opt/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"partial link text","selector":"http"} (Session info: chrome=78.0.3904.70)
該当のソースコード
from bs4 import BeautifulSoup from selenium import webdriver import requests from urllib.parse import urljoin url_list = [] for n in range(1, 2): url = f"https://tenshoku.mynavi.jp/search/list/?pageNum={n}" res = requests.get(url) res.raise_for_status() soup = BeautifulSoup(res.text, "html.parser") for i in soup.find_all("a", class_='linkArrowS', text="詳細を見る"): elem = urljoin(url, i.get("href")).replace("/msg/", "/") # url_listに格納 url_list.append(elem) for m in url_list: driver = webdriver.Chrome(executable_path='chromedriver') driver.execute_script("window.open(arguments[0], 'newtab')", m) target = driver.find_element_by_partial_link_text('http') target.click()
seleniumを使ったほうがブラウザが処理するので遅くなると思いますが、速くなるのは確かでしょうか?
これは会社一覧からhref属性を探したいのか、特定の会社の詳細ページからhref属性を探したいのかどちらでしょうか?
ご連絡ありがとうございます!
ご返答遅れて申し訳ありません!
https://tenshoku.mynavi.jp/jobinfo-127282-1-22-1/
こちらのサイトの「企業ホームページ」にあるURLを取得したいです!
回答1件
あなたの回答
tips
プレビュー