通过python打开一个模拟浏览器,并自动访问百度首页
from selenium import webdriver
browser=webdriver.Chrome()
browser.get('https://www.baidu.com/')
获取网页源代码
from selenium import webdriver
browser=webdriver.Chrome()
browser.get('https://www.baidu.com/')
#获取网页源代码
data=browser.page_source
关闭模拟浏览器:browser.quit()
定位网页元素:
(1)XPath法
XPath可以理解为网页元素的名字或ID
find_element_by_xpath()函数可根据XPath表达式定位网页元素
语法:browser.find_element_by_xpath('XPath表达式')
示例:
browser.find_element_by_xpath('//*[@id="kw"]').send_keys('python')
定位到搜索框,再用.send_keys('python')就可以模拟在搜索框里输入“Python”的效果
如果搜索框里有默认文本,可使用 .clear()清空默认文本。
模拟定位“百度一下”按钮:
browser.find_element_by_xpath('//*[@id="su"]').click()
用 .click()实现点击
(2)CSS选择器
find_element_by_css_selector('CSS选择器')
“Copy>Copy selector”命令即可复制CSS选择器。
输入和点击与XPath相同:.send_keys()和.click()
无界面浏览器模式:
运行代码时不弹出模拟浏览器窗口,就要启用无界面浏览器(Chrome Headless)模式。
把browser=webdriver.Chrome()替换成如下:
chrome_options=webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
browser=webdriver.Chrome(options=chrome_options)
其他:
handles=browser.window_handles #获取浏览器所有窗口的句柄
browser.switch_to.window(handle[0]) #切换到第一个窗口,即最开始打开的窗口
browser.switch_to.window(handles[-1]) #切换到倒数第一个窗口,即最新打开的窗口
控制滚动条滚动:
#滚动1个页面高度的距离
browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
#从最顶端向下滚动60000像素的距离,通常就是滚动到页面底部了
browser.execute_script('document.documentElement.scrollTop=60000')
id属性类似于身份证号,一个网页中各个元素的id属性一般不会重复,因此,可以用这个<div>标签作为一个强定位条件。