python selenium 隐藏打开窗口_Python+Selenium使用(一)- 自动打开百度并进行搜索

9739fcef3ddfd6ef0b027e593cf82e4a.png

selenium是一个自动化测试的工具,可以模拟人的操作,而且配合python来使用非常方便。

官网:SeleniumHQ Browser Automation


安装配置

要开始使用selenium,需要安装一些依赖

conda install selenium

437c5c0ca7228910b3a1ab8053bebc3c.png

要使用selenium去调用浏览器,还需要一个驱动,不同浏览器的webdriver需要独立安装

https://www.selenium.dev/documentation/en/webdriver/driver_requirements/Driver requirementshttps://www.selenium.dev/documentation/en/webdriver/driver_requirements/

我这里就下载Firefox的驱动,下载之后,是一个EXE文件

480ea899d4afd81c09850e1911479cc1.png

把这个文件找地方放一下,然后,加入到PATH中

这两步做完之后,就可以测试下了

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("https://www.baidu.com/")

8117f12cc3fca4e38a7918ec94ac769a.png

遇到的第一个问题,是这个driver,说找不到,但是我已经配置到PATH中了

这里也可以手工指定路径

from selenium import webdriver


driver = webdriver.Firefox(executable_path=r'C:Program FilesMozilla Firefoxgeckodriver.exe')
driver.get("https://www.baidu.com/")

如果环境没有问题的话,就会弹出一个火狐浏览器,打开百度网址

cefc8b7ef688e9ef5d5d1ae52f1e013e.png

定位元素

我们打开一个网页之后,我们就可以定位我们指定的页面元素,比如文本款,按钮等

我们继续以百度为例,我们填入关键词“python”,并提交搜索

为了填入关键词,我们首先如要知道怎么找到这个搜索框

在浏览器中,使用开发者工具,查看代码

9a24d8caefa3fbfd9cefab8fb3a8d1a0.png

这里应该是这个input,它属于一个form表单

49169de74194625b0a0fac1eb5ca1a6f.png

大概可以使用这几种方式来确定一个元素

这里先使用id来找到这个元素

from selenium import webdriver

driver = webdriver.Firefox(executable_path=r'C:Program FilesMozilla Firefoxgeckodriver.exe')
driver.get("https://www.baidu.com/")
p_input = driver.find_element_by_id('kw')
print(p_input)
print(p_input.location)
print(p_input.size)
print(p_input.send_keys('python'))
print(p_input.text)

7b21c3d45c11301ab324b2a852da9da4.png

location,是元素的位置;

size是元素的大小

send_keys是给元素传入值,这里,我们再传入python之后,会自动展开搜索

212a0ccec76069eadb5645bf521d0645.png

最后一行p_input.text,本来是想输入元素的内容,但是这里是None,或许,我们应该用另一种方式来获取

print(p_input.get_property('name'))
print(p_input.get_property('value'))

fcd4578963ce16a1d9d115c61f649b75.png

使用get_property函数,可以根据属性名称获取值

好了,我们接着看

b732ec13db916a10b05220a6c97765c1.png

我们在传入搜索值之后,页面切换了,但是,并没有进行搜索,我们还差一步搜索

为了出发搜索,我们可以使用

7b124c5aed93e60c75e7cdc6a2ba0a17.png

用另一个input,也就是按钮的点击事件来实现;或者是form表单的提交事件

p_btn = driver.find_element_by_id('su')
p_btn.click()

重新执行后,就会进行搜索了

e8d790a3cc5455f9780b4ac2a17993b3.png

后面,我们还可以针对结果页面,进行处理

比如把所有的结果都记录下来

ads = driver.find_elements_by_css_selector("div.c-container")
print('count:', len(ads))

for a in ads:
    try:
        x = a.find_element_by_css_selector('h3:nth-child(1) > a:nth-child(1)')
        print('title:', x.text)
        print('url:', x.get_property('href'))
        print('------------')
    except NoSuchElementException as e:
        print(e)

fe8f8aa2ef90f9f875fdf37bb5f98943.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值