python爬虫使用selenium爬取热门微博数据

完整代码

from selenium.webdriver import Chrome
import time
import csvf = open("./热门微博.csv",mode='w',newline='',encoding='utf-8')
writer_obj = csv.writer(f)url = 'https://weibo.com/'
web = Chrome()
web.get(url)time.sleep(10)web.find_element_by_xpath('//*[@id="pl_login_form"]/div/div[1]/div/a[1]').click()
web.find_element_by_xpath('//*[@id="loginname"]').send_keys('login_name')#用户名
web.find_element_by_xpath('//*[@id="pl_login_form"]/div/div[3]/div[2]/div/input').send_keys('login_password')#密码
time.sleep(2)
web.find_element_by_xpath('//*[@id="pl_login_form"]/div/div[3]/div[6]/a').click()
#这里等待15秒是因为有时候登陆需要扫码,15秒的时间需要人工扫码登陆,否则会报错找不到element
time.sleep(15)
web.find_element_by_xpath('//*[@id="v6_pl_leftnav_group"]/div[2]/div[1]/div[5]/div[1]/a/span[2]').click()
count = 0  #记录爬取记录条数
for i in range(5):time.sleep(3)detail_list = web.find_elements_by_xpath('//*[@id="Pl_Core_NewMixFeed__3"]/div/div[2]/div')#print(detail_list)for div in detail_list[:8]:text_info_list = []user_name = div.find_element_by_xpath('./div[1]/div[@class="WB_detail"]/div[@class="WB_info"]/a[1]').text   #用户名#print(user_name)release_time = div.find_element_by_xpath('./div[1]/div[@class="WB_detail"]/div[@class="WB_from S_txt2"]/a[1]').text    #发布时间#print(release_time)text_detail = div.find_element_by_xpath('./div[1]/div[@class="WB_detail"]/div[@class="WB_text W_f14"]').text  #文本内容#print(text_detail)tran_num = div.find_element_by_xpath('./div[2]/div/ul/li[2]/a/span/span/span/em[2]').text   #转发数#print(tran_num)comment_num = div.find_element_by_xpath('./div[2]/div/ul/li[3]/a/span/span/span/em[2]').text    #评论数#print(comment_num)up_num = div.find_element_by_xpath('./div[2]/div/ul/li[4]/a/span/span/span/em[2]').text #点赞数#print(up_num)text_info_list.append(user_name)text_info_list.append(release_time)text_info_list.append(text_detail)text_info_list.append(tran_num)text_info_list.append(comment_num)text_info_list.append(up_num)writer_obj.writerow(text_info_list)count += len(detail_list)web.refresh()print("已抓取{0}条数据".format(count))

编写时遇到的几个问题

xpath定位问题:
每一条微博的文本,发布时间等信息,其复制xpath路径有可能是不同的,例如:
第一条微博的文本在
‘//*[@id="pl_login_form"]/div/div[3]/div[1]’
但是第二条微博的文本就可能在
‘//*[@id="pl_login_form"]/div/div[4]/div[2]
我们注意到其中div的顺序改变了,因此在定位过程中,xpath路径需要在默认的格式上加属性class定位才准确。否则会出现爬取了一条以后,第二条就报错的情况。
页面刷新问题:
每次页面刷新或者切换以后,需要等待几秒time.sleep(2)。如果页面没有完全加载出来而去进行xpath定位,就会报找不到element的错误。

缺点及待改进地方
缺陷1:
由于热门微博的加载模式是向下滚动,我使用的Chrom浏览器不知道为什么最终没有实现自动向下滚动这个功能,因此我是用的方法是:将已经加载出来的数据爬取,之后进行页面刷新web.refresh(),每刷新一次,爬取10条数据。
缺陷2
有部分微博的文本被折叠,需要展开全文,我通过点击展开全文实现了展开,但是并没有实现将展开后的文本爬取下来这一功能,目前还没有想到其他解决办法。

爬虫小白,希望对大家有所帮助,欢迎大家在评论区交流。

python+selenium爬虫,使用selenium爬取热门微博数据相关推荐

  1. 爬取热门微博数据2018.3.27更新

    import requests import os import re import csv import time import jsonheaders = {'User-Agent':'Mozil ...

  2. Python【爬虫实战】爬取美女壁纸资源

    Python[爬虫实战]爬取美女壁纸资源 一:首先选取一个网站,这里我们选择了一个壁纸网站 二:进入网站,我们可以看到很多图片放在一页里 三:按下F12开发者工具,点击Elments查看网页的代码 四 ...

  3. [day4]python网络爬虫实战:爬取美女写真图片(Scrapy版)

    l> 我的新书<Android App开发入门与实战>已于2020年8月由人民邮电出版社出版,欢迎购买.点击进入详情 文章目录 1.开发环境 2.第三方库 3.Scrapy简介 4. ...

  4. [day1]python网络爬虫实战:爬取美女写真图片

    l> 我的新书<Android App开发入门与实战>已于2020年8月由人民邮电出版社出版,欢迎购买.点击进入详情 文章目录 1.开发环境 2.第三方库 3.实现 1.分析url格 ...

  5. [day2]python网络爬虫实战:爬取美女写真图片(增强版)

    l> 我的新书<Android App开发入门与实战>已于2020年8月由人民邮电出版社出版,欢迎购买.点击进入详情 文章目录 1.开发环境 2.第三方库 3.实现 1.分析url格 ...

  6. Python借助爬虫Requests+BS4爬取人民教育出版社义务教育下学期课本(二)

    文章目录 思路梳理 封装函数 重要提示 系列文章 思路梳理 我们打开网页,可以看到这其中有许多链接,我们可以查看一下网页源代码,可以看到如我们所期盼的一样,这里有许多的链接,我们只需要把链接爬取出来就 ...

  7. Python借助爬虫Requests+BS4爬取人民教育出版社义务教育下学期课本(一)

    经过一晚上的休息,我已经重新从阴影中站了起来,并重新发现了一个人性化的网站,一起来看看这个网站吧 来到了人民教育出版社的官网,一看,顿时晕眩三秒,我昨天的努力不都白费了吗,只得重新打起精神,研究一下这 ...

  8. Python 网络爬虫实战:爬取知乎回答中的全部图片

    平时逛知乎的时候,经常能看到很多很棒的图片,精美的壁纸,搞笑的表情包,有趣的截图等等,总有想全部保存下来的冲动. 于是在一个小老弟的拜托之下,我把之前的知乎爬虫改造了一下,改装成了一个可以下载知乎回答 ...

  9. python爬虫课设-爬取3000条数据并做数据可视化

    很久以前接的单子,分享一下(挺水的,将就着看吧) 文章目录 作业要求 数据爬取 爬取结果 数据处理 数据可视化 大作业文档 作业要求 <Python与数据分析>期末大作业要求(2020-2 ...

最新文章

  1. 汽车票销售系统mysql,jsp683客运汽车票网上售票系统mysql
  2. 在博客园写了一年博客,收获的不仅仅是写作技能——我能一直保持积极的学习和工作态度...
  3. Spring中BeanPostProcessor 执行过程
  4. Android:JAVA使用HDF5存储
  5. 【bzoj5037】[Jsoi2014]电信网络 最大权闭合图
  6. RedHat系列软件管理(第二版) --二进制软件包管理
  7. Csharp:user WebControl Read Adobe PDF Files In Your Web Browser
  8. linux下实现对多个文件去重软件,Linux下大文件的排序和去重复
  9. 正则表达式 - php正则匹配内容?
  10. 机器学习 --- 2. 从最大似然再看线性回归(转)
  11. Fish for mac安装 fish+on my fish ---(powerline主题)美化
  12. 0xc0000428 winload.exe无法验证其数字签名的解决方法
  13. Windows 10 运行、CMD 命令大全
  14. 如何在简历中编写Spark大数据项目经验
  15. 银河麒麟服务器修改ip,银河麒麟配置DNS服务器
  16. python对网站DDos攻击
  17. 毕设 数据库ER图绘制过程中的参考资料
  18. Jetson TK1 刷机安装Ubuntu系统与Mini PCI-e无线网卡
  19. 快速排序详细分析--单向扫描和双向扫描
  20. dij算法堆优化_迪杰斯特拉算法(Dijkstra) (基础dij+堆优化) BY:优少

热门文章

  1. k型热电偶分度表_热电偶补偿导线
  2. C语言实现贪吃蛇(使用链表,适合初学者)
  3. for语句和while循环二者无条件等价
  4. 思科恢复服务器上的配置信息,思科服务器的配置方法
  5. TRS Database admin数据字段类型总结
  6. trs 同步模版 栏目修改(高级)
  7. 电脑安装了git之后拉取代码报错:git fatal: Authentication failed for
  8. 【Minio】新一代自建文件系统——Minio
  9. nginx启动报错has suspicious symbols
  10. 线扫描matlab,MATLAB在水下激光线扫描图像处理中的应用