参考文档地址 https://python-selenium-zh.readthedocs.io/
from selenium import webdriver
打开浏览器读取网页,并关闭 selenium
browser = webdriver.Chrome()
browser.get("http://qifu.baidu.com/?activeKey=SEARCH_IP")
print(browser.page_source)
browser.quit() # 退出,清除浏览器缓存
简介写法
with webdriver.Chrome() as browser:
browser.get("http://qifu.baidu.com/?activeKey=SEARCH_IP")
print(browser.page_source)
加入 配置和隐式等待 ( 即等待全部js加载完成 )
options = webdriver.ChromeOptions()
options.add_argument('--no-sandbox') # 以最高权限运行
options.add_argument('--disable-dev-shm-usage') # 解决资源不足的问题
options.add_argument('--hide-scrollbars') # 隐藏滚动条, 应对一些特殊页面
# 浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
options.add_argument('--headless')
# 不加载图片, 提升速度
options.add_argument('blink-settings=imagesEnabled=false')
# 谷歌文档提到需要加上这个属性来规避bug
options.add_argument('--disable-gpu')
with webdriver.Chrome(chrome_options=options) as browser:
browser.get("http://qifu.baidu.com/?activeKey=SEARCH_IP")
browser.implicitly_wait(10)# 隐式等待,等待js加载完成在获取页面
print(browser.page_source)
查找需要元素的方法:
browser.find_element browser.find_element_by_class_name browser.find_element_by_css_selector browser.find_element_by_id browser.find_element_by_link_text browser.find_element_by_name browser.find_element_by_partial_link_text browser.find_element_by_tag_name browser.find_element_by_xpath # 查询多个则element加s,例如: browser.find_elements_by_class_name
例子:查询某个IP的地址信息
with webdriver.Chrome(chrome_options=options) as browser:
browser.get("http://qifu.baidu.com/?activeKey=SEARCH_IP")
browser.implicitly_wait(3)
# 需要用来查询标签的 class
inputclass = 'acSearchTool__searchInput-Exa1W'
submitclass = 'acSearchTool__searchBtn-1IcKW'
infoclass = 'qifu__ipResultRow-2Aibv'
# 获取输入框,并且输入需要查询的IP
element = browser.find_element_by_class_name(inputclass)
element.send_keys("39.156.69.79")
# 点击查询按钮
button_element = browser.find_element_by_class_name(submitclass)
button_element.click()
# 等待加载完成
browser.implicitly_wait(5)
# 获取查询的结果
info_elements = browser.find_elements_by_class_name(infoclass)
for info in info_elements:
print(info.text)
评论已关闭。