您的位置:首页 > 编程语言 > Python开发

[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语句,是可以达到实时的效果的。

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: