pythonを学習し始めて3ヶ月の初心者です。
ECサイトの在庫取得、新規商品登録などを自動化したいためseleniumでシステムを構築したいと思い今回の質問にいたりました。
調べながらいろいろ試したのですが、これ以上打つ手が思い浮かばず。。みなさまのお力をいただけたら幸いです。
前提・実現したいこと
Seleniumを使い下記の手順で、まずは商品ページの基本情報である「商品管理番号」を取得しようとしました。
例えばこちらのページ:https://ena-kagu.com/product.php?id=380
であれば「商品管理番号 135004」を取得できるようにしたいです。
1.ログイン
2.商品一覧ページに遷移(https://ena-kagu.com/list.php)
3.ページングしながら商品一覧ページにある個別商品のURLを取得
4.商品個別ページの指定したテキストを取得
上記の手順で1~3までは実現できたのですが、4の部分でつまづいています。
発生している問題・エラーメッセージ
このコードで取得できていると思い、CSVに出力したところ以下のように出力ができていませんでした。
色々調べたのですが、どこの部分に問題がまったくわからずです。
テキスト検索している下記の部分が間違っているのかな?と思っています(違う箇所が間違っていればご指摘ください)
python
1find_elements_by_xpath('//*[contains(text(), "商品管理番号")]')
↓出力されたCSV↓
管理番号 0 [<selenium.webdriver.remote.webelement.WebElem... 1 [<selenium.webdriver.remote.webelement.WebElem... 2 [<selenium.webdriver.remote.webelement.WebElem... 3 [<selenium.webdriver.remote.webelement.WebElem... 4 [<selenium.webdriver.remote.webelement.WebElem... 5 [<selenium.webdriver.remote.webelement.WebElem... 6 [<selenium.webdriver.remote.webelement.WebElem... 7 [<selenium.webdriver.remote.webelement.WebElem... 8 [<selenium.webdriver.remote.webelement.WebElem... 9 [<selenium.webdriver.remote.webelement.WebElem...
該当のソースコード
# 参考:https://nanjamonja.net/archives/893 from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.common.exceptions import NoSuchElementException import pandas as pd from time import sleep import time headers = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"} USER = "ユーザーネーム" PASS = "パスワード" options = Options() options.add_argument browser = webdriver.Chrome('クロームドライバーのパス',options=options) browser.implicitly_wait(3) url_login = "https://ena-kagu.com/login.php" browser.get(url_login) time.sleep(3) print("ログインページにアクセス") element = browser.find_element_by_name('loginEmail') element.clear() element.send_keys(USER) print("フォームを送信") element = browser.find_element_by_name('loginPassword') element.clear() element.send_keys(PASS) print("パスワードを入力") test_browser = browser.find_element_by_name('login') time.sleep(3) test_browser.click() print("クリックしました") pageURL = 'https://ena-kagu.com/list.php' #商品一覧ページ browser.get(pageURL) sleep(3) elem_urls=[] while True: elems = browser.find_elements_by_css_selector(".list-box-inner a") #boxSearchresultEach>h3>aタグまでを取得 #https://posipochi.com/2021/05/03/python-scraping-css-selector/ (CSSセレクタ) for elem in elems: elem_urls.append(elem.get_attribute("href")) #リス[elem_urls]にhrefを格納 #次へボタンクリックしてページ遷移 try: next_button = browser.find_element_by_link_text('次へ »') next_button.click() sleep(3) except Exception: break print('ページ数:',len(elem_urls)) cols=['管理番号'] df = pd.DataFrame(index=[], columns=cols) for i in elem_urls: browser.get(i) #管理番号取得 item_num = browser.find_elements_by_xpath('//*[contains(text(), "商品管理番号")]') df = df.append({'管理番号':item_num}, ignore_index=True)
補足情報(FW/ツールのバージョンなど)
jupyter labを使用しています。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。