[Python+Selenium]Mac OS下应用Homebrew完成Chromedriver安装以及使用selenium完成百度搜索并显示搜索结果
2019-03-07 22:52
956 查看
一、安装Chromedriver以及pip安装selenium库
[code]$brew cask install chromedriver $pip install selenium
二、应用selenium库完成百度搜索
[code]from selenium import webdriver from selenium.webdriver.common.keys import Keys # 模拟键盘的库 driver = webdriver.Chrome() driver.get('http://www.baidu.com') assert "百度" in driver.title #定位搜索框,并输入搜索值后进行回车 input_element = driver.find_element_by_id('kw') input_element.send_keys('Python') input_element.send_keys(Keys.RETURN) #此处也可以用input_element.submit()
安装完成Homebrew后,利用Chrome及其get方法。运行这段代码会自动弹出Chrome浏览器,并进行操作。
三、遍历显示百度搜索页面结果
直接复制粘贴Xpath,并使用find_elements_by_xpath()方法
[code]yes = driver.find_elements_by_xpath('//*[@id="1"]/h3/a[0]') print(yes)
发现返回的是空的列表。
原因在与百度搜索是异步加载的,也就是说框架不会因为翻页面会变化,只变化其中的内容,因此直接复制粘贴找到的是空壳儿,只能返回空的列表,这样也能够解释为什么输入完搜索值后会有一定的页面加载延迟。
那么有一种办法是利用Beautifulsoup库,具体请参照用Selenium进行百度搜索结果简单提取
在网上搜索过程中,发现selenium爬去异步加载的百度搜索是非常困难的,不能通过简单的加长等待时间就可以获得请求,因此可以选用request库,直接获得完整文档,再进行解析。
于是换了一种思路,直接去get第一页的链接
[code]driver = webdriver.Chrome() driver.get('https://www.baidu.com/s?wd=python&pn=0&oq=python&ie=utf-8&usm=1&rsv_idx=1&rsv_pq=a12270f200017a02&rsv_t=a24ehBKdy2T0nefC0TLoTOzAugzKl6A07Fyhn8mxd%2B6GWOGumzUtCid%2FDOo') assert "百度" in driver.title for a in driver.find_elements_by_xpath('//*[@id]/h3/a'): print(a.text) print(a.get_attribute('href'))
得到如下结果:
[code]Welcome to Python.org http://www.baidu.com/link?url=hgdxPGw17LUtZzsZsoba1XEMzBt_0M7D112GXlpa93bq8D1_5ochLss6szbskkVx 官网 http://trust.baidu.com/vstar/official/intro?type=gw Python 基础教程 | 菜鸟教程 http://www.baidu.com/link?url=K2c4GNgSXMe2PVTGupzp35NN5Owgor-Is0xVi8u2DXKMlG_m0MK2erM16n0N376yK2TUHhOfWRnBzS-5k-iA_a Python教程 - 廖雪峰的官方网站 http://www.baidu.com/link?url=NW5xCNl9ubbZ8FuVln7WbCVzPCds-8qgVzkbWGR7xyaopah5ju9Woiz3_K8m6BKbnP4F1z0dbEQsxfWF-XmR-3uf9NX7blnGlnMV-bqqKuBC4riNJYZZGuy6122iFoT_ Python(计算机程序设计语言)_百度百科 http://www.baidu.com/link?url=bX6N6Yk6mlOwEqgn-rP1S9f1rnZT3hxL-UkTxJ4UoBzgY6MuodoaJtc1i1CuqD5p python的最新相关信息 http://www.baidu.com/link?url=C2JYsQuK10NnCM1JR_ZkD7P_c957fpWJ_7wVqk3rkUjzHraxrWnp3pEpe0WjzZG-PRY-VkTGiSQIdgj0MDlfWDqy9S7HC3s9h276Sa9U2aq 调查显示开发者最讨厌 PHP,最爱 Python - 开源中国 http://www.baidu.com/link?url=38ZYSzA5eRrYS1ISdje-CXIq4DZkO2k0jFk0EOEuAHmjNrFR5qRb09GT12i6wuZtYTABCGl1h7h22TwxQ6szVgAHI96zm4zOxQ8ugvNbiQUs6MhUXcactoewXwi5scYV 北京python机器学习培训老师-中科信软高级技术培训 http://www.baidu.com/link?url=8yhOvCjnPCnSp-ALv2P33cZZJWuBoypRMozlL3-gMb9IteGl_PcPEPRPpJAAooExLHUeb27Et0fYGXZ2BFmQDq Download Python | Python.org http://www.baidu.com/link?url=W1f4RQyvlG_tuJj_0OPKFaj5ovTEl__sP3xI_jO-JRrD4XsIcbbCDYYh8xuMAu1z Python 简介 | 菜鸟教程 http://www.baidu.com/link?url=zckhtrmRo1NzwNfvL39Wmt4t5jcNZ8QwYyQze352R7afqLPr8ieafCk1uJf0sPT3m5ew7yAKXJWEMmu2aFdVA_ python吧-百度贴吧--python学习交流基地。--这里有一群python爱好... http://www.baidu.com/link?url=KRwki0r8nY9kBEKdYHSqe4NKM5YRkpnxgJNJ72PjViqhu5yvF1Hwu7N8QcYg_7MP Process finished with exit code 0
链接https://www.baidu.com/s?wd=python&pn=0&oq=python&ie=utf-8&usm=1&rsv_idx=1&rsv_pq=a12270f200017a02&rsv_t=a24ehBKdy2T0nefC0TLoTOzAugzKl6A07Fyhn8mxd%2B6GWOGumzUtCid%2FDOo中,注意到了pn=0,手动跳转下一页变成了pn=10,因此可以尝试以10倍改变pn这个值达到全网爬取的效果
尽管最后的方法避开了提交关键字的过程,但是也能够暂时实现了最终目的,增加if语句,是可以达到实时的效果的。
相关文章推荐
- selenium安装与配置,以及chromedriver的使用
- selenium之关于 chromedriver的安装和使用
- win10下chromedriver下载及安装--以及selenium的配置
- Liunx环境下python使用: Headless chrome + Selenium + ChromeDriver搭建
- Mac OS 10.13以上安装pygame,使用安装台安装时,在选择目的卷宗时,显示无法安装在任何磁盘上。pygame requires System Python 2.7 to install.
- ubuntu下安装selenium以及chromedriver、geckodriver和phantomjs等驱动
- selenium+chromedriver安装及简单使用
- 【Python3.6爬虫学习记录】(七)使用Selenium+ChromeDriver爬取知乎某问题的回答
- selenium之关于 chromedriver的安装和使用
- selenium+python关于登录的脚本代码,使用了读取excel以及向excel中写入测试结果的方法
- Ubuntu16.04 Selenium+python 环境搭建 Chromedriver安装
- python+ubuntu+selenium安装chrome和chromedriver
- linux 安装 selenium 以及 chromedriver 安装
- selenium-webdriver循环点击百度搜索结果以及获取新页面的handler
- python爬虫之selenium安装以及使用
- selenium和chromedriver安装与基础应用
- Hibernate Search使用以及搜索结果高亮显示
- selenium包的pip下载命令以及Chrome(谷歌)、Firefox(火狐)浏览器驱动GeckoDriver安装方法
- Mac OS X 程序员利器 – Homebrew安装与使用以及python学习指南
- pip的安装,更新,卸载模块以及使用方法 python