欢迎来到知了堂!
联系电话:知了堂-电话号码 028-62016472

Python爬虫之selenium和xpath的使用-知了堂

Python爬虫之selenium和xpath的使用

  selenium

  在淘宝镜像中下载指定的chromedriver,windwos的用户将其放在 虚拟环境的scripts或者python3的环境文件中,总之要和python.exe同级目录,Linux和Mac用户放入/usr/local/bin目录下

  selenium入门

  
pip install selenium


from selenium import webdirver

driver = webdriver.Chrome()  # 创建一个Chrome的driver实例对象

# 访问人人登录页面
driver.get(url="http://www.renren.com/")

# 填写用户名和密码
driver.find_element_by_id("email").send_keys("xxx")
driver.find_element_by_id("password").send_keys("xxx")

# 点击登陆
driver.find_element_by_id("login").click()

# 退出
driver.quit()
  driver.page_source网页源码
  driver.current_url 当前网页的url

  selenium处理cookie


# 把cookie转化为字典
{cookie['name']: cookie['value'] for cookie in driver.get_cookies()}

#删除一条cookie
driver.delete_cookie("CookieName")
# 删除所有的cookie
driver.delete_all_cookies()

  selenium定位元素

# 通过xpath定位元素
driver.find_element_by_xpath("//a")

# 通过链接文字定位
driver.find_element_by_link_text("下一页")

# 通过包含得链接文字定位元素
driver.find_element_by_partial_link_text("下一")

# 通过标签名定位
driver.find_element_by_tag_name("a")

  find_element 返会一个Element对象,如果没找到,报错
  find_elements 返回一个列表,元素项时Elements,如果没找到,返回空列表
  **find_element_by_xpath() 或者find_element_by_xpath()中传入得xpath表达式只能定位到标签 ** ,如果需要获取指定element的文本或者属性值:
  elelemt.text 获取文本
  element.get_attribute("") 获取属性内容

  切换iframe

  网页存在iframe嵌套架构,如果要查找的标签在指定的iframe里面,必须先切换到iframe中才能正确找到
  driver.switch_to.frame() 可以传入iframe的id、name、element对象

Python爬虫之selenium和xpath的使用

 

  验证的判断

  flask的项目中的验证码逻辑:
  前端js产生一个UUID,发起图片验证码请求时带上UUID参数
  后端随机生成一个code,以UUID:code的形式存入Redis数据库中
  前端POST请求提交验证时,需要携带UUID,后端从redis中读取指定的code和用户输入的进行对比验证

  传统的验证码请求方式:

  请求网页登陆页面的时候,服务器为当前用户开辟session空间,并向浏览器的cookies中写入一个seesion_id
  浏览器请求验证码验证码图片时会自动携带cookies,seesion_id 会被提交到服务器 ,后端产生随机的code 放入sesion_id指定的sesion空间中
  前端发起提交验证的 post请求时,也会自动携带cookie,seesion_id 会再次被提交到服务器 ,后端根据session_id在指定的sesion空间中找出曾经存入的code,和前端提交的进行对比验证
  此种情况下,应考虑使用requests.session()来进行验证码突破
 
  版权声明:本文来源于网络,由知了堂搜集整理,仅供大家学习Python时使用