让程序自动百度搜索周杰伦,做这个练习巩固一下这几天学的selenium基本知识。
遇到的主要问题:百度的href随机变化,需要通过正则提取:
import re
"""
正则表达式测试
<a.+?href=\"(.+?)\".*>(.+)</a>
单独href : <a.+?href=\"(.+?)\".*>
单独连接文字:>(.+)</a>
"""
href = '<a href="http://zonghe.hao.360.cn/#cid=youlike?from=hot-toutiao">热点</a>'
value = re.search(r'<a.+?href=\"(.+?)\".*>(.+)</a>', href)
print(value.group(1)) # http://zonghe.hao.360.cn/#cid=youlike?from=hot-toutiao
print(value.group(2)) # 热点
代码:
from selenium import webdriver
import re
wd = webdriver.Chrome(r'D:\soft\selenium\chromedriver.exe') # 谷歌驱动
wd.implicitly_wait(10) # # 设置最大等待时长为10秒
wd.get('https://www.baidu.com/')
wd.find_element_by_class_name('s_ipt').send_keys('周杰伦') # 找到输入框输入搜索内容
wd.find_element_by_id('su').click()
# 看下文截图
elements = wd.find_elements_by_css_selector('h3:nth-child(1)')
get_href = elements[2].get_attribute('innerHTML')
href_value = re.search(r'<a.+?href=\"(.+?)\".*>(.+)</a>', get_href)
href_value = href_value.group(1)
element = wd.find_element_by_css_selector('[href="%s"]' % href_value)
element.click()
# 切换窗口
for handle in wd.window_handles:
wd.switch_to.window(handle)
if '周杰伦_百度百科' == wd.title:
break