selenium 模拟登陆豆瓣,爬去武林外传的短评:

  在最开始写爬虫的时候,抓取豆瓣评论,我们从F12里面是可以直接发现接口的,但是最近豆瓣更新,数据是JS异步加载的,所以没有找到合适的方法爬去,于是采用了selenium来模拟浏览器爬取。

  豆瓣登陆也是改了样式,我们可以发现登陆页面是在另一个frame里面

所以代码如下:

# -*- coding:utf-8 -*-
# 导包
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# 创建chrome参数对象
opt = webdriver.ChromeOptions()
# 把chrome设置成无界面模式,不论windows还是linux都可以,自动适配对应参数
opt.set_headless()
# 用的是谷歌浏览器
driver = webdriver.Chrome(options=opt)
driver=webdriver.Chrome()
# 登录豆瓣网
driver.get("http://www.douban.com/")# 切换到登录框架中来
driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0])
# 点击"密码登录"
bottom1 = driver.find_element_by_xpath('/html/body/div[1]/div[1]/ul[1]/li[2]')
bottom1.click()# # 输入密码账号
input1 = driver.find_element_by_xpath('//*[@id="username"]')
input1.clear()
input1.send_keys("xxxxx")input2 = driver.find_element_by_xpath('//*[@id="password"]')
input2.clear()
input2.send_keys("xxxxx")# 登录
bottom = driver.find_element_by_class_name('account-form-field-submit ')
bottom.click()

 然后跳转到评论界面      https://movie.douban.com/subject/3882715/comments?sort=new_score

点击下一页发现url变化  https://movie.douban.com/subject/3882715/comments?start=20&limit=20&sort=new_score 所以我们观察到变化后可以直接写循环

获取用户的姓名

driver.find_element_by_xpath('//*[@id="comments"]/div[{}]/div[2]/h3/span[2]/a'.format(str(i))).text用户的评论

driver.find_element_by_xpath('//*[@id="comments"]/div[{}]/div[2]/p/span'.format(str(i))).text然后我们想要知道用户的居住地:
1    #获取用户的url然后点击url获取居住地
2             userInfo=driver.find_element_by_xpath('//*[@id="comments"]/div[{}]/div[2]/h3/span[2]/a'.format(str(i))).get_attribute('href')3 driver.get(userInfo)4             try:5                 userLocation = driver.find_element_by_xpath('//*[@id="profile"]/div/div[2]/div[1]/div/a').text6                 print("用户的居之地是:")7                 print(userLocation)8             exceptException as e:9                 print(e)

这里要注意有些用户没有写居住地,所以必须要捕获异常

完整代码

#-*- coding:utf-8 -*-#导包
importtimefrom selenium importwebdriverfrom selenium.webdriver.common.keys importKeysclassdoubanwlwz_spider():def __init__(self):#创建chrome参数对象opt =webdriver.ChromeOptions()#把chrome设置成无界面模式,不论windows还是linux都可以,自动适配对应参数
opt.set_headless()#用的是谷歌浏览器driver = webdriver.Chrome(options=opt)driver=webdriver.Chrome()self.getInfo(driver)defgetInfo(self,driver):#切换到登录框架中来#登录豆瓣网driver =driverdriver.get("http://www.douban.com/")driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0])#点击"密码登录"bottom1 = driver.find_element_by_xpath('/html/body/div[1]/div[1]/ul[1]/li[2]')bottom1.click()## 输入密码账号input1 = driver.find_element_by_xpath('//*[@id="username"]')input1.clear()input1.send_keys("ZZZ2")input2= driver.find_element_by_xpath('//*[@id="password"]')input2.clear()input2.send_keys("ZZZ")#登录bottom = driver.find_element_by_class_name('account-form-field-submit')bottom.click()time.sleep(1)driver.get('https://movie.douban.com/subject/3882715/comments?start=300&limit=20&sort=new_score')search_window=driver.current_window_handle#pageSource=driver.page_source#print(pageSource)#获取用户的名字 每页20个for i in range(1,21):print("用户的评论是:")print(driver.find_element_by_xpath('//*[@id="comments"]/div[{}]/div[2]/h3/span[2]/a'.format(str(i))).text)#获取用户的评论#print(driver.find_element_by_xpath('//*[@id="comments"]/div[1]/div[2]/p/span').text)print("用户的名字是:")print(driver.find_element_by_xpath('//*[@id="comments"]/div[{}]/div[2]/p/span'.format(str(i))).text)#获取用户的url然后点击url获取居住地userInfo=driver.find_element_by_xpath('//*[@id="comments"]/div[{}]/div[2]/h3/span[2]/a'.format(str(i))).get_attribute('href')driver.get(userInfo)try:userLocation= driver.find_element_by_xpath('//*[@id="profile"]/div/div[2]/div[1]/div/a').textprint("用户的居之地是:")print(userLocation)exceptException as e:print(e)driver.back()pageNum=int(input("请输入您想要爬去的步行街的页数:"))
AAA=doubanwlwz_spider()

  

转载于:https://www.cnblogs.com/ZFBG/p/10992970.html

selenium 模拟登陆豆瓣,爬取武林外传的短评相关推荐

  1. 通过selenium模拟登陆新浪微博爬取首页和评论

    1,获得登陆后的cookies,在通过cookiejar维持cookies(requests不能保存手动构建的cookies),并传入session中 2,在使用获得的session去请求页面,获得首 ...

  2. 【python】实验2项目2:使用爬虫Selenium模拟浏览器获取爬取QQ音乐中你喜欢的某位歌手(陈奕迅)

    请使用爬虫Selenium模拟浏览器获取爬取QQ音乐中你喜欢的某位歌手(可以是任意歌手)最受欢迎的前5首歌曲的歌词.流派.歌曲发行时间.评论条数.评论时间.评论点赞次数.评论内容具体(每一首歌的评论& ...

  3. Python 爬虫 之 Selenium 模拟打开操作浏览器爬取斗鱼全部视播相关信息,并json保存信息

    Python 爬虫 之 Selenium 模拟打开操作浏览器爬取斗鱼全部视播相关信息,并json保存信息 基础: Python 爬虫 之 Selenium.webdriver 的安装,以及模拟打开操作 ...

  4. Python爬虫:Selenium模拟Chrome浏览器爬取淘宝商品信息

    对于采用异步加载技术的网页,有时候想通过逆向工程的方式来设计爬虫进行爬取会比较困难,因此,要想通过python获取异步加载数据往往可以使用Selenium模拟浏览器的方式来获取. Selenium是一 ...

  5. selenium模拟登陆豆瓣并获取cookies

    验证码处理与模拟登陆豆瓣,首先我们看到豆瓣没有cookies,我们需要用程序来模拟登陆获取cookies(当前有些情况下自己手动登陆后复制粘贴cookies也能登陆),该文主要讲方法,如何用selen ...

  6. python实例豆瓣代码_Python实例:通过selenium模拟登陆豆瓣

    前几天写的<Python实例:分析豆瓣影片评论Ver 1.0版本>文章中,关于爬取数据过频繁导致IP被封禁的事情让我对豆瓣数据的爬取中断了.忽然想到之前有写过关于关于使用selenium库 ...

  7. selenium模拟登陆豆瓣网

    前言 随着网站安全做的越来越好,不少网站,直接去爬取数据是无法爬出来的,必须要验证登陆,即登陆之后才能做后面的操作,因此需要解决的第一步就是登陆 登陆的常用方式: 1.使用request库,模拟pos ...

  8. Scrapy模拟登陆豆瓣抓取数据

    由于豆瓣网站是反爬虫的,因此要破解反爬虫和模拟登录,还有需要破解验证码. 1创建项目 (在pycharm中创建scrapy爬虫工程即可) scrapy  startproject douban 其中d ...

  9. 【Python3.6爬虫学习记录】(十二)PhantomJS模拟登陆并爬取教务处学生照片(哈工大)

    前言:这也不算心血来潮的事情,前面几天文章都涉及过,之前一直觉得很麻烦.必须SSLVPN登陆,到教务处页面,然后进行页面跳转到照片页面.所以每次打开图片页面都要保证登陆教务处,当然可以使用cookie ...

  10. python爬虫+网页点击事件+selenium模拟浏览器,爬取选股宝内容

    (一)PYTHON的安装(已安装,可跳过此步骤) 1.PYTHON下载 PYTHON官网:https://www.python.org/ 按照对应的系统下载,我这里是window系统,点击window ...

最新文章

  1. 广度优先搜索 BFS算法
  2. 巧用rsyslog收集多套日志并做单套日志的过滤分离
  3. 拉格朗日乘子法 KKT条件
  4. Java黑皮书课后题第7章:**7.19(是否排好序了?)编写以下方法,如果参数中的list数组已经排好序了则返回true。编写一个测试程序,提示用户输入一个列表,显示该列表是否已经排好序
  5. 前端学习(2763):基本的数据绑定
  6. atitit.orm的缺点与orm框架市场占有率,选型attilax总结
  7. 基于HAProxy的网站架构
  8. 【华为云技术分享】干货分享丨jvm系列:dump文件深度分析
  9. jvm调优工具_高级程序员必会的5个JVM性能监控、调优工具使用详解
  10. webpack5+vue3搭建h5项目模板-(二)-eslint代码规范化
  11. 趋势软件卸载去除密码提示
  12. C语言考试题及答案(一)
  13. 解析小型机、大型机和PC服务器间的差别
  14. 通俗易懂解释raid0和raid5_简要阐述raid 0,raid 1,raid5 之间的区别于优缺点以及最低组建条件和可用容量...
  15. 完整ASCII字符表
  16. 如何选择智能车牌识别摄像机
  17. 小米应用使用时间统计_屏幕使用时间
  18. html表单新增类型,HTML5表单设计——新增输入类型和新增表单属性
  19. DDS的理解及IP核的使用
  20. 基于springboot整合的rabbitmq

热门文章

  1. 计算机音乐创作心得,理结与悠的作曲入门讲座(心得篇 3-4)
  2. linux权限后面的点,linux 文件权限后面一个点的含义
  3. wxformbuilder软件制作gui界面教程
  4. 每节课都是一个项目 手把手用STM32打造联网气象站-9-用LCD显示中文英文和图片
  5. 【STM32CubeMX+Keil+PROTEUS】之---4*4键盘仿真驱动
  6. 秋风,唱给田野动听的歌
  7. Python爬取摩拜单车位置信息
  8. java架构中:亿级用户中心的设计与实践
  9. 卡西欧计算机设置参数,【卡西欧 fx-991CN X 中文函数计算器使用总结】参数|功能|显示|计算_摘要频道_什么值得买...
  10. STM32开发实例 基于STM32单片机的刷卡计数系统