使用Selenium单击特定按钮和复选框

时间:2017-01-19 06:37:32

标签: python selenium beautifulsoup phantomjs web-crawler

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

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

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 =“검색”....

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

请给我一个建议。

感谢。

2 个答案:

答案 0 :(得分:0)

尝试更改此行:

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

为:

attrs

查找的签名是:

  

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

其中swift3是字典,它将属性名称作为键,值作为值。你可以在这里参考文档: https://www.crummy.com/software/BeautifulSoup/bs4/doc/#find

答案 1 :(得分:0)

你看到两个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)查看您拥有的属性。

  

然后,我想点击&#34;판매중인차량&#34;的复选框。

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

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