@atiesi

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

CSSセレクターで取得したリストから、一部除外したい要素が存在する場合のやり方。

Q&A

Closed

CSSセレクターにて

layout-%s > div > div > a" % II

といった条件で指定しているのですが
aの中に特例のhrefを指定しているaがあれば飛ばすという作業をやりたいのですが、そういったことは可能でしょうか?
例えば
a href="XXXXXX"
a href="tokutei" ←here
a href="YYYYYY"

hereだけ飛ばしたい場合です。hrefの指定先のtokuteiは常に一定のものとします。

以下にソースコード貼ります。
可能であればご教授お願いします。

search.py
II=0
while II < 1000:
    II = II + 1
    selector = "#layout-%s > div > div > a" % II
    elements = driver.find_elements_by_css_selector(selector)
    print(selector)
    for _index, element in zip(range(50), elements):
        print(selector)
        element.click()
        time.sleep(1)
        #クローズの処理
        selector = "#dialog-root > div:nth-child(9) > div > div.css-9241wp-BasePersonalView > div > div.css-12g7msy-BasePersonalView > button:nth-child(1)"
        if len(driver.find_elements_by_css_selector(selector)) == 1:
            element = driver.find_element_by_css_selector(selector)
            element.click()
    driver.find_element_by_tag_name('body').send_keys(Keys.END)
0 likes

2Answer

飛ばしたいものの数が少ない,かつ,一定であれば擬似要素:notを使うことで対象外とすることができます.

selector = "#layout-%s > div > div > a:not([href='tokutei'])" % II

もう少し複雑な条件指定をしたい場合はCSS selector 部分一致などで検索してみてください.

1Like

CSS selectorの代わりにxPathを使うことで解決します。
もしくはPython側でfilterかけてもいいと思いますよ

出先なので詳しいソースがなくてすみません。

0Like

Comments

  1. @atiesi

    Questioner

    フィルターというのは具体的にどのようなソースを書けばいいか御教授して頂いても大丈夫ですか?

Your answer might help someone💌