由于平时喜欢刷微博,追星,所以写了想要写一个爬取微博的爬虫,在老师的建议下选择从移动端爬取,因为移动端页面元素简洁,易于爬取。在看微博时发现有比移动端更加简单的一个版本。。。。老年机版?就是分页式的。

在网上看了一些爬取微博的爬虫,采取cookie模拟登陆,cookie直接在chrome按f12选择Network点击第一个网页,再点右边的Headers–>Request Headers,赋值下面的cookie即可。百度可以很轻松的找到方法。

想清楚上面的问题后就开始分析移动端的网页构造了,经过分析源代码,发现微博总页数是一个input标签的value属性,而input标签的name属性为’mp’,这是唯一的。然后每条微博的代码块由div标签闭合,含有id属性并且class属性的值均为’c’。微博内容的标签为span,span标签的class属性的值为‘ctt’然后微博发送时间和客户端的标签为span标签,span标签的class属性的值为’ct’,这也是发送时间的代码块特有的属性值。

下面是详细代码:

import requests

from bs4 import BeautifulSoup as bs

import pymysql

# uid即进入对方微博主页后网址部分/u/后的那一串数字

uid = input('请输入所要爬取的用户id:')

url= 'https://weibo.cn/u/'+uid

cookie = '你的cookie'

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36',

'Cookie': cookie}

res = requests.get(url, headers=headers)

soup = bs(res.text, 'html.parser')

#获得微博总页数

totalPage = int(soup.find('input', attrs={'name': 'mp'}).attrs['value'])

print('总共检测到%d页微博页面' % totalPage)

#定义各列表

weibo_text=[]

weibo_images=[]

weibo_time=[]

weibo_client=[]

weibo_urlList=[]

# 每页微博的URL的列表

for i in range(totalPage):

weibo_urlList.append(url+'page='+str(i + 1)')

#遍历每页微博

for each in weibo_urlList:

r= requests.get(each , headers=headers)

soup = bs(r.text, 'html.parser')

# 每条微博所对应的标签代码块列表

weibo_tags_list = soup.find_all('div', attrs={'class': 'c'}, id=True)

for weibo_tag in weibo_tags_list:

# 获取微博发送时间

hms = weibo_tag.find_all('span', attrs={'class': 'ct'})

for each_time in hms :

weibo_time .append(each_time.text.replace('\xa0', ' ').split(' ')[0]+each_time.text.replace('\xa0', ' ').split(' ')[1])

#获取客户端

for each_client in hms :

weibo_client .append(each_time.text.replace('\xa0', ' ').split(' ')[2])

#获取微博文本内容

texts=weibo_tag.find_all('span',attrs={'class':'ctt'})

for each_text in texts :

weibo_text .append(each_text.text)

try:

#连接数据库

# conn = pymysql.connect(host='localhost', port=3306, user='root', password='root', database='weibo', charset='utf8mb4')

conn = pymysql.connect(host=' ', port=3306, user='', password='', database='weibo', charset='utf8mb4')

cursor = conn.cursor()

#创建表

cursor.execute('create table weibo_info (id INT AUTO_INCREMENT PRIMARY KEY,weibo_time VARCHAR(45),weibo_client VARCHAR (45) ,weibo_text VARCHAR(500))')

for i in range(len(weibo_time)):

cursor.execute('insert into weibo_info(weibo_time,weibo_client,weibo_text)VALUES(%s,%s,%s)',(weibo_time[i],weibo_client[i],weibo_text[i]))

cursor.fetchall()

# 提交结果

conn.commit()

print("结果已提交")

except Exception as e:

# 数据回滚

conn.rollback()

print("数据已回滚")

# 关闭数据库

conn.close()

需要注意的是数据库utf8下文字是三字节,但是emoji是四字节,微博内容有许多emoji表情,需要将编码改成utf8mb4。

在此次练习中出现了许多的问题,并且最终结果也与我初次设计的结果有一些出入,还需要改进很多,在调试过程中更是非常耗费耐心排除问题,希望以后能够再接再厉。

python爬取微博数据存入数据库_python爬取微博并且存入数据库相关推荐

  1. python爬微博数据合法吗_Python 免登录微博数据爬虫(仅研究使用)

    微博数据是非常有价值的数据,这些数据可以用作我们进行一些系统开发时的数据源, 比如前段时间发过的:Python 短文本识别个体是否有自杀倾向,在此文中,我们使用微博绝望树洞的数据,利用SVM做了一个简 ...

  2. python爬网盘数据犯法吗_python爬取疫情数据的源码

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  3. Jsoup:用Java也可以爬虫,怎么使用Java进行爬虫,用Java爬取网页数据,使用Jsoup爬取数据,爬虫举例:京东搜索

    Jsoup:用Java也可以爬虫,怎么使用Java进行爬虫,用Java爬取网页数据,使用Jsoup爬取数据,爬虫举例:京东搜索 一.资源 为什么接下来的代码中要使用el.getElementsByTa ...

  4. python爬取微博数据存入数据库_Python爬取微博数据并存入mysql,excel中

    寒假期间做微博数据统计,由于是部门要求,也没办法,自己又是一个懒人,直接用python实现吧.写的很粗糙,也很差,请大家别介意. 总的来说分成两个模块:一个爬取微博数据存入数据库,一个从数据库调取数据 ...

  5. python爬取微博数据存入数据库_Python爬取新浪微博评论数据,写入csv文件中

    因为新浪微博网页版爬虫比较困难,故采取用手机网页端爬取的方式 操作步骤如下: 1. 网页版登陆新浪微博 2.打开m.weibo.cn 3.查找自己感兴趣的话题,获取对应的数据接口链接 4.获取cook ...

  6. python爬取新闻存入数据库_python爬取数据存入数据库

    昨天本来写了一篇关于python爬取的文章,结果没通过,正好今天一起吧.用python同时实现爬取,和存入数据库,算是复习一下前面操作数据库的知识. 1.准备工作 既然是爬取,那自然要连接到爬取的页面 ...

  7. python爬取股票大单历史记录_python爬取股票实时数据,python爬虫与股票分析

    内容导航: Q1:怎么学python爬取财经信息 本程序使用Python 2.7.6编写,扩展了Python自带的HTMLParser,自动根据预设的股票代码列表,从Yahoo Finance抓取列表 ...

  8. python爬虫爬微信数据可信吗_Python爬取微信,我发现了之前没发现的秘密!

    技术群里一位读者微信私聊我,问我能不能统计下微信好友信息并以文件形式保存.其实,以前也写过类似的文章,一篇是微信好友性别统计,一篇是制作好友签名的词云图.比较分散,今天就索性把他们整合一下,一次性完成 ...

  9. python 爬虫抓取网页数据导出excel_Python爬虫|爬取起点中文网小说信息保存到Excel...

    前言: 爬取起点中文网全部小说基本信息,小说名.作者.类别.连载\完结情况.简介,并将爬取的数据存储与EXCEL表中 环境:Python3.7 PyCharm Chrome浏览器 主要模块:xlwt ...

最新文章

  1. Deep learning的一些教程 (转载)
  2. android中断言_我可以使用断言在Android设备上?
  3. 最新房天下登录接口(RSA)JS逆向分析
  4. antd table动态表头_React项目使用ant Table组件动态生成columns
  5. 博士学位真的那么重要吗?上交大博士亲述科研心路,获4万高赞,网友:这是知乎最好的回答...
  6. OpenCV入门(八)——形态学技术
  7. nodejs取汉字的首字母大写
  8. 资深UI设计师告诉你:交互设计师必须具备的4项能力
  9. 服务器误删除虚拟机数据恢复成功
  10. 有太多工作要做,传蚂蚁集团IPO可能推迟至2022年
  11. 滴滴出行小程序体积优化实践
  12. python基础课程讲解基本语法常见运算符以及结构语句
  13. android中按钮右对齐,在Android中左右对齐双按钮布局
  14. 花了1个月时间,把Python库全部整理出来了,覆盖所有,建议收藏
  15. 多线程(之五:线程协作)
  16. 【GNSS高精度定位应用】
  17. 初识C语言之详解char类型
  18. [RK3399] [Android7.1] UAC配置,使用USB转音频喇叭播放声音
  19. pythonscrapy爬虫 崔庆才_Python爬虫实战一之爬取糗事百科段子
  20. 用计算机找到自己的另一半,心理专家教你,如何利用心理学找到自己的另一半?...

热门文章

  1. 海量数据大课学习笔记(8)-账号微服务注册模块+短信验证码+阿里云OSS开发实战-小滴课堂
  2. 书籍勘误表整理(2019.5.7)
  3. Python实现TF-IDF提取关键词(sklearn库的使用)
  4. 今天的文章只有一点点
  5. 易语言如何调用大漠插件
  6. 网络游戏外挂制作(3)-1
  7. 非旋treap套线段树
  8. 视频教程-基于Java的WebSocket的聊天室-Java
  9. Science: 重新“野化“ 植物微生物组
  10. 工作中提高工作效率的几个思维模式