selenium指定浏览器路径_Python+Selenium使用(一)- 自动打开百度并进行搜索

617d59c44032bf7347173ffca2453fb4.png

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

官网:SeleniumHQ Browser Automation


安装配置

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

conda install selenium

67b7ca53464517cde9ce748d5184f612.png

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

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

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

0cb03d1420aaf4585eceb2fc86f5b376.png

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

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

from selenium import webdriver

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

d656fdad9bb413adc3953ad594b63e44.png

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

这里也可以手工指定路径

from selenium import webdriver


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

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

d96058ca1f07645e9d8801c7861582ab.png

定位元素

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

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

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

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

101fced49ed3a4f0f48f1a74c71f4b36.png

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

7e88a3a3db3cd7a046c99e3b9a91134d.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)

4251661db05217d95b4a0ee57ab88313.png

location,是元素的位置;

size是元素的大小

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

992235e3198300761edc80d0a738f7fe.png

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

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

2d04c9814b769edb064e1b6fb3496909.png

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

好了,我们接着看

d6f4180a8108a05f0491568730532820.png

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

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

440ad6f144f10f5eb28f0e55722803a8.png

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

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

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

aba8dcd139f84b2bc7d168e004f5d0c4.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)

28b0171159c8439f9e55748cf5f7f7e8.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本执行程序exe是工程《Python爬虫【零】问题介绍 -- 对“微博辟谣”账号的历史微博进行数据采集》https://blog.csdn.net/u010086122/article/details/114957255 为Windows编译的可执行程序,基于Python3.7+selenium制作,工程源代码: https://download.csdn.net/download/u010086122/16086467 ----------------------------------------------------------------------------------------- 1. 执行项目前,需要下载selenium对应的浏览器驱动程序(driver.exe),并放在本机环境变量路径中,否则会报错。安装操作具体可见博客专题中的指导【二】 2. 执行程序时,会在系统用户默认路径下,创建一个虚拟的python环境(我的路径是C:\Users\Albert\AppData\Local\Temp\_MEI124882\),因此启动项目所需时间较长(约30秒后屏幕才有反应,打出提示),请耐心等待;也正因如此,执行电脑本身环境是可以无需安装pythonselenium依赖包的 3. 本项目采用cmd交互方式执行,因此等到屏幕显示: 选择爬取方式: 1. 移动版微博爬取 2. PC网页版微博爬取(单线程) 3. PC网页版微博爬取(页面内多线程) 4. PC网页版微博爬取(多线程异步处理多页面) 后,用键盘输入1~4,敲回车执行 4. 此exe编译时,工程代码内编写的最终excel记录保存地址为:相对工程根路径下的excel文件夹;因此当本exe执行到最后保存数据时,会因为此excel文件夹路径不存在而报错。若在工程中将保存地址改为绝对路径(例如D:\excel\),再编译生成exe执行,则最终爬取数据可以正确保存

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值