• 搭建环境
  • 代码设计
  • 使用说明及效果展示

一、搭建环境

1. 软件版本

Python3.7.4

Anaconda3

2. 环境搭建问题

  • 配置Anaconda环境变量
    问题:anaconda未设置在环境变量里,导致使用pip下载python自带的库时无法下载到对应的路径进行使用。
    解决:在电脑的环境变量中添加anaconda的路径。
  • 使用pip网络问题
    问题:因为网速过慢的原因导致无法正常使用pip进行更新以及python库的下载。
    WARNING: pip is configured with locations that require TLS/SSL,however the ssl module in Python is not available.
    解决:输入命令改为pip install xxx -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com,使用豆瓣源进行下载。

二、代码设计

1. 获取cookie

在网上查阅了很多的资料之后,我实现了模拟登陆获取cookie的方法,但是目前仍不能通过模拟登陆获取的cookie进行微博平台的连接和数据获取,所以在此我们的cookie是通过手动登陆微博平台后所获得的。
(模拟登陆获取cookie的方法网上很多,在此不做具体说明了)

爬取平台:微博 www.weibo.cn
获取cookie:使用用户名+密码登录www.weibo.cn 后,点击键盘F12 进入控制台界面。在network中找到名为weibo.cn的记录,点击查看里面的cookies。

2. 爬取数据

- 爬取文字

该函数主要是用来爬取文字内容,其中省略了部分对于冗余字符的处理。

- 爬取图片

该函数主要是用来爬取图片内容,其中根据微博图片/评论图片的不同,对于标签的筛选不同。

- 爬取表情

该函数主要是用来爬取微博评论表情内容。

三、使用说明及效果展示

1. 使用说明

  • 修改cookie

  • 修改微博评论的网址为所要爬取的微博评论,以“page=”结尾

  • 在程序所在位置的同级目录下创建两个文件夹分别为:评论图片、评论表情。(本代码使用的相对路径,无需修改代码中的路径)

2. 效果展示

  • 运行程序输入爬取的起始页数、终止页数
  • 已爬取相应内容

    附源代码:

"""环境: Python 3.7.4
内容:爬取微博评论内容、图片、表情
修改时间:2020.10.27
@author: Wenwen"""import requests
import urllib.request
import re
import time
import csv
from bs4 import BeautifulSoupnum = 1
list_content = []
list_t = []#请求函数:获取某一网页上的所有内容
def get_one_page(url):headers = {'User-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36','Host' : 'weibo.cn','Accept' : 'application/json, text/plain, */*','Accept-Language' : 'zh-CN,zh;q=0.9','Accept-Encoding' : 'gzip, deflate, br','Cookie' : '_T_WM=7c42b73c4c9cfa6fc4ff7350804c4504; SUB=_2A25yR6oNDeRhGedO41AZ8CzJyz2IHXVRyzZFrDV6PUJbktAKLXfakW1Nm4uHzxmmnLSVywkxToubmHotH6MGAF_Y; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9W5cHZZGnYY4KoxQoDxu1c2T5NHD95QpehnE1h5ESK5pWs4DqcjHIsyQi--Ri-zciKnfi--RiK.7iKyh; SUHB=0jBFua3v6DW2fH; SSOLoginState=1598282334','DNT' : '1','Connection' : 'keep-alive'}#请求头的书写,包括User-agent,Cookie等response = requests.get(url,headers = headers,verify=False)#利用requests.get命令获取网页htmlif response.status_code == 200:#状态为200即为爬取成功return response.text#返回值为html文档,传入到解析函数当中return None#爬取微博评论内容
def comment_page(html):print("序号","内容")pattern = re.compile('<span class="ctt">.*?</span>', re.S)items = re.findall(pattern,html)result = str(items)reResults = re.findall(">.*?<",result,re.S)first_results  = []for result in reResults:#print(result)if ">\'][\'<"  in result:continueif ">:<"  in result:continueif "<a href" in result:continueif ">回复<"  in result:continueif ">评论配图<"  in result:continueif "><"  in result:continueif ">\', \'<"  in result:continueif "@"  in result:continueif "> <"  in result:continueelse:first_results.append(result)#print("first:",firstStepResults)TEXT1 = re.compile(">")TEXT2 = re.compile("<")datalist = []datalist_t = []for last_result in first_results:global numtemp1 = re.sub(TEXT1, '', last_result)excel = re.sub(TEXT2, '', temp1)datalist_t = [num,excel]datalist.append(datalist_t)print(num,excel)with open('.\\微博评论内容.txt','a',encoding='utf-8') as fp:fp.write(excel)num += 1'''    if datalist == datalist1:datalist.clear()else:datalist1 = datalist'''return datalist#爬取微博评论的图片
def comment_img(html):#BS对象bf_1 = BeautifulSoup(html,'lxml')#获取全部上级标签text_1 = bf_1.find_all('span',{'class':'ctt'})#获取所有指定标签img = []#   img1 = []for i in range(len(text_1)):for x in text_1[i].find_all('a',string = "评论配图"):link = x.get('href')if link:img.append(link)#   if img == img1:#       img.clear()#   else:#       img1 = imgreturn img#爬取微博评论的表情
def comment_emotion(html):#BS对象bf_1 = BeautifulSoup(html,'lxml')#获取全部上级标签text_1 = bf_1.find_all('span',{'class':'ctt'})#获取所有指定标签emotion = []#  emotion1 = []for i in range(len(text_1)):for x in text_1[i].find_all('img'):link = x.get('src')if link:emotion.append('http:'+link)#  if emotion == emotion1:#      emotion.clear()#  else:#      emotion1 = emotionreturn emotion#爬取评论内容
def comment(ori,end):alllist = []imglist = []emotionlist = []final = end + 1for i in range(ori,final):url = "https://weibo.cn/comment/hot/JohBbtrnO?rl=1&page=" + str(i)html = get_one_page(url)#print(html)print('正在爬取第 %d 页评论' % (i))alllist = alllist + comment_page(html)imglist = imglist + comment_img(html)emotionlist = emotionlist + comment_emotion(html)time.sleep(3)   if i == end :print('爬取结束,共爬取 %d 页评论' %(end-ori+1))print('保存评论到微博评论内容.csv文件中......')store_text(alllist)  print('保存评论图片到文件夹中......')#print('comment_img:',imglist)store_img(imglist)print('保存评论表情到文件夹中......')#print('comment_emotion:',emotionlist)store_emotion(emotionlist)print('保存完毕!')#存储微博评论内容
def store_text(list):with open('.\\微博评论内容.csv','w',encoding='utf-8-sig',newline='') as f:'''f.write('content\n')f.write('\n'.join(list))'''csv_writer = csv.writer(f)for item in list:csv_writer.writerow(item)f.close()#存储微博评论图片
def store_img(list):j=0for imgurl in list:urllib.request.urlretrieve(imgurl,'.\\评论图片\\%s.jpg' % j)     j+=1#存储微博评论表情
def store_emotion(list):k=0for imgurl in list:urllib.request.urlretrieve(imgurl,'.\\评论表情\\%s.jpg' % k)k+=1  if __name__=="__main__":ori = input("请输入你要爬取的起始页数:")end = input("情输入你要爬取的终止页数:")ori = int(ori)end = int(end)if ori and end:print("将会爬取第 %d 页到第 %d 页的评论内容" %(ori,end))comment(ori,end)else:print("请输入符合规范的数字!")

PS:如遇到解决不了问题的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入

基于微博平台的python爬虫数据采集,非常简单的小案例!相关推荐

  1. 【课程设计】基于Taro+React+Springboot+TaroUI+Python爬虫的网络音乐播放小程序详细设计实现

    [课程设计]基于Taro+React+Springboot+TaroUI+Python爬虫的网络音乐播放小程序详细设计实现 解决触摸穿透 自定义导航栏 文章目录 项目简介 功能截图 1.用户登录注册 ...

  2. Python爬虫 | 爬取高质量小姐姐照片

    Python爬虫 | 爬取高质量小姐姐照片 1.数据来源分析 2.获取author_id_list和img_id 3.制作detial 4.制作detial_list 5.数据保存 6.批量获取 7. ...

  3. python爬虫数据采集_python爬虫采集

    python爬虫采集 最近有个项目需要采集一些网站网页,以前都是用php来做,但现在十分流行用python做采集,研究了一些做一下记录. 采集数据的根本是要获取一个网页的内容,再根据内容筛选出需要的数 ...

  4. python爬虫数据采集

    近几年来,python的热度一直特别火!大学期间,也进行了一番深入学习,毕业后也曾试图把python作为自己的职业方向,虽然没有如愿成为一名python工程师,但掌握了python,也让我现如今的工作 ...

  5. Python爬虫原理与简单示例代码

    链接 链接 爬取知乎热榜话题: 链接 BeautifulSoup的使用1: url = 'http://www.cntour.cn/'strhtml = requests.get(url)soup = ...

  6. python爬虫概述及简单实践

    文章目录 一.先了解用户获取网络数据的方式 二.简单了解网页源代码的组成 1.web基本的编程语言 2.使用浏览器查看网页源代码 三.爬虫概述 1.认识爬虫 2.python爬虫 3.爬虫分类 4.爬 ...

  7. python 爬虫开发之抖音小工具

    前言: 有没有感觉网络不好的时候一个小视频要等半天才能看,而且等了这么久还不定能下载完成.特别是在外出差的交通工具上的时候,那时候网络真叫一个差字啊!想看抖影音打发时间都没网络.最近突然想到了可以用P ...

  8. python爬虫抓取图片-简单的python爬虫教程:批量爬取图片

    python编程语言,可以说是新型语言,也是这两年来发展比较快的一种语言,而且不管是少儿还是成年人都可以学习这个新型编程语言,今天南京小码王python培训机构变为大家分享了一个python爬虫教程. ...

  9. Python爬虫之Requests模块巩固深入案例

    爬虫之Requests模块巩固深入案例 requests实战之网页采集器 requests实战之破解百度翻译 requests实战之豆瓣电影爬取 requests实战之肯德基餐厅位置爬取 reques ...

  10. Python爬虫,自动下载cosplay小姐姐图片!

    1.xpath使用 使用之前,传统艺能就是先导入该模块parsel. 之前我们匹配我们想要的内容比如链接,文字这些内容我们是不是都是通过正则表达式来爬取的 不知道大家看完之后是不是觉得正则表达式好难, ...

最新文章

  1. 【H.264】x264命令详解:x264 --fullhelp
  2. vb6调用python识别训练例子_在vb6中创建的“标准”dll在python中调用时会出现访问冲突...
  3. 第一次亲密接触vim编辑器
  4. phpstudy集成环境安装redis扩展
  5. java向上造型的优点_老榆木家具适合什么装修风格?老榆木家具有哪些优点
  6. 【UML 建模】UML入门 之 交互图 -- 时序图 协作图详解
  7. Hadoop: MapReduce2的几个基本示例
  8. 配置Memcache服务器并实现主从复制功能(repcached)
  9. 【spring boot】 mybatis配置双数据源/多数据源
  10. 算法与数据结构(part4)--顺序表
  11. mac下配置eclipse的maven环境
  12. matlab中svm testacc参数,使用Matlab进行交叉验证的多类SVM的完整示例
  13. CoreBluetooth Central模式 Swift版
  14. iBATIS的自定义类型处理器TypeHandlerCallback解决乱码
  15. python如何将抓取的数据保存到excel_Python实现提取XML内容并保存到Excel中的方法...
  16. 订阅机票时要注意的几个教训
  17. 阿里云短信验证第三方接口(快速使用)
  18. Appium自动化测试元素定位方式
  19. mysql怎么做排名并列_MySQL实现排名并查询指定用户排名功能,并列排名功能
  20. Citrix 服务器虚拟化之二十一 桌面虚拟化之部署Provisioning Services

热门文章

  1. 交换机级联-知识点、注意事项
  2. a36.ansible 生产实战案例 -- 基于kubeadm安装kubernetes v1.23 -- 集群部署(一)
  3. python+websocket匿名聊天室实现
  4. 算法工程师13——机器学习强化
  5. 最新GEP分销系统网站源码官方
  6. 【EMNLP2020】忒修斯之船启发下的知识蒸馏新思路 - 微软研究院
  7. 用github创建php网站,github可以用来做什么
  8. gerrit rebase
  9. 像西方知识分子那样登场
  10. Kattis - bumped B - Bumped! (最短路)