Selenium 使用问题记录

2022-05-31 20:26:16 浏览数 (1)

获取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()

0 人点赞