参考文档地址 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)
评论已关闭。