获取sessionStorage
有些爬虫需要携带sessionStorage中的一个参数, 这个参数是存在浏览器中的, 使用requests获取不到, 只能使用selenium来获取
代码语言:javascript复制xNum = browser.execute_script('return sessionStorage.xNum')
点击未显示在页面上的元素
比如: 页面上的菜单栏, 需要移动鼠标到菜单上才能显示子菜单, 然后才能点击, 但是selenium移动鼠标需要坐标, 又不太好找
解决方法
1. 执行js, 直接让子菜单显示在页面上, 然后点击, 这个需要到具体页面测试, 如何给元素添加属性能显示子菜单
代码语言:javascript复制browser.execute_script('document.querySelector("#Menu").setAttribute("display","block")')
browser.execute_script('#home').click()
2. 直接执行js点击, 需要先在页面测试
代码语言:javascript复制browser.execute_script("jQuery('a#GetInfo')[0].click();")
无头模式无法访问
在调试代码的时候需要显示页面, 然后一步步调试, 终于信心满满的完成了, 接下来添加无头模式, 完犊子了, 啥也显示不出来了, 页面禁止访问了
解决方法
1. 设置请求头
代码语言:javascript复制from selenium import webdriver
user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36'
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--headless")
chrome_options.add_argument('user-agent={user_agent}'.format(user_agent=user_agent))
browser = webdriver.Chrome(options=chrome_options)
2. 尝试使用Firefox浏览器
代码语言:javascript复制browser = webdriver.Firefox()
其它常用方法
代码语言:javascript复制from selenium import webdriver
browser = webdriver.Chrome()
# 1. 请求页面
browser.get("https://www.baidu.com")
# 2. 保存部分元素图片
with open('baidu.jpg', 'wb') as f:
f.write(browser.find_element_by_id('lg').screenshot_as_png)
# 3. 输入框输入
browser.find_element_by_id("kw").send_keys("不止于python")
# 4. 点击搜索
browser.find_element_by_id("su").click()
# 5. 获取网页源码
raw_html = browser.page_source
print(raw_html)
# 6. 执行js, 页面滚动
browser.execute_script("window.scrollTo(0,300);")
# 7. 切换到iframe
# iframe = browser.find_elements_by_tag_name('iframe')[0]
# browser.switch_to.frame(iframe)
# 7.关闭页面, 关闭浏览器
browser.close()
browser.quit()