【问题标题】:Click a specific button and a checkbox using Selenium使用 Selenium 单击特定按钮和复选框
【发布时间】:2017-06-03 18:27:48
【问题描述】:

我正在尝试单击“detail_search_button”并选中“판매중인 차량”复选框。但是当我试图找到“detail_search_button”时,问题就发生了。

我在 BeautifulSoup 中使用了“查找”功能,如下所示:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import StaleElementReferenceException
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select

from bs4 import BeautifulSoup
from time import sleep

link = 'http://www.bobaedream.co.kr/cyber/CyberCar.php?gubun=I'
driver = webdriver.PhantomJS()
driver.set_window_size(1920, 1080)
driver.get(link)
sleep(.75)

soup = BeautifulSoup(driver.page_source, "html.parser", from_encoding='utf-8')

# detail search open
detail_search = soup.find('img', alt='상세검색')
print(detail_search)

结果如下:

<img alt="상세검색" class="pointer" id="detail_search_btn" src="http://image.bobaedream.co.kr/renew/images/common_re/btn_search01.gif" title="상세검색열기">
<img alt="검색" class="pointer mr" id="search_click" src="http://image.bobaedream.co.kr/renew/images/common_re/btn_search02.gif" title="검색"> <span class="result" style="padding:0 5px 0 0;"><strong>181,959</strong>대</span> </img></img>

我想要的结果是只有第一个按钮没有第二个按钮,img alt="검색"....

然后,我想点击“판매중인차량”的复选框。

请给我一个建议。

谢谢。

【问题讨论】:

    标签: python selenium beautifulsoup phantomjs web-crawler


    【解决方案1】:

    尝试更改此行:

    detail_search = soup.find('img', alt='상세검색')
    

    到:

    detail_search = soup.find('img', {'alt':'상세검색'})
    

    find 的签名是:

    find(name, attrs, recursive, string, **kwargs)

    其中attrs 是一个字典,它将属性名称作为键,将值作为值。您可以在此处参考文档: https://www.crummy.com/software/BeautifulSoup/bs4/doc/#find

    【讨论】:

    • 谢谢,sisanared。非常感谢您的帮助。
    • 这会产生相同的结果,find 返回两个img。也没有回答关于复选框的问题
    • 这个答案显然是错误的。 find 确实为 OP 工作,因此无需重新制定属性。另外:find 永远不会找到多个节点。
    【解决方案2】:

    你看到两个img的原因是因为一个嵌套在另一个中:

    <img alt="상세검색" class="pointer" id="detail_search_btn" src="http://image.bobaedream.co.kr/renew/images/common_re/btn_search01.gif" title="상세검색열기">
        <img alt="검색" class="pointer mr" id="search_click" src="http://image.bobaedream.co.kr/renew/images/common_re/btn_search02.gif" title="검색">
            <span class="result" style="padding:0 5px 0 0;">    
            <strong>181,966</strong>대</span>
        </img>
    </img>
    

    事实上,find永远不会找到多个节点,如果您要搜索多个节点,请使用 find_all

    要访问父 img 的属性,请使用 attrs 属性,例如像这样:

    img = soup.find('img', alt='상세검색')
    src = img.attrs['src']
    

    试试print(img.attrs) 看看你有哪些属性。

    然后,我想点击“판매중인차량”的复选框。

    我在文档中找不到与판매중인차량 匹配的任何内容,所以我需要猜测:如果您想按标题搜索所有复选框,请使用:

    soup.find('input', type="checkbox", title="개인")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-07
      • 1970-01-01
      • 2021-03-31
      • 2013-11-12
      • 2013-05-15
      • 2020-10-06
      • 1970-01-01
      相关资源
      最近更新 更多