Python Scrapy框架爬取微博数据
-1.前言
最近导师接到了一个项目,要爬取社交网路的数据,其中有一部分是爬取微博,Twitter和Facebook.目前实现了微博部分.先写着.
整个工程是使用的python3.6+Scray框架+MySQL数据库.
整个项目是在一个github开源的项目的基础上进行修改.
由于整个项目具有保密性,所以源码就不能放出了,下面和大家交流思路.
未完待续,有空我就会更新一下.
0.总体思路
主要是通过weibo.cn这个站去爬取.这个也是网上的大佬们最常用的方式.
首先分析一下为什么这么做:
首先,新浪微博的API已经是个废的了,不用再考虑了.
新浪微博目前存在三个站点 weibo.cn(最老的站),m.weibo.com(目前手机端的站),weibo.com(PC端的站).这三个站的爬取难度由低到高.后两个站都是动态加载的,想要爬取就要模拟浏览器的下滑动作(不过也可以判断分页问题,但这样速度就很慢了),而且评论也是动态加载的,这就导致爬取难度很大.(至少对于我这个新手来说)
再者,这个站访问的页面都是有规律可循的,所以难度就降低了.
上面是优点.
缺点就是这个站能够爬取的信息不足,一是无法获取爬取用户的点赞别人的微博,二是无法获取全部的粉丝/关注列表(另外两个站限制的更多)
总体上爬取的相关信息如下:
1.个人信息
2.粉丝列表(最近200位)
3.关注列表(最近200位)
4.指定用户的所有微博
5.单条微博的点赞/转发/评论数
6.单条微博下的所有评论(包括评论者的UID)
1.技术描述
首先是使用的编程环境:Windows 10 + pycharm 2018.2.4 + Anaconda3 + Python 3.6.6 +Scrapy 1.5.1 + (Mysql 5.7.23 + SQLyog Community 64)
关于 pycharm 和 Anaconda3 的相关配置请自行百度完成后,记得换源,不然后面conda一些环境的时候会非常痛苦.
关于 Scrapy 框架的安装可以参考《Python 3网络爬虫开发实战》,里面第一章爬虫环境的搭建.同时记得装上pysql.
PS:网上有很多人用的MongoDB,但是我是感觉也就Python写代码的是方便点,资源还是比较少(尤其是,我需要做简单的有界面的数据展示,以前本科是用C#做项目的,研究了很久的MongoDB的dll是真的很难受.最后还是换成了MySQL)
主要的思路就是模拟浏览器登录,然后获取Cookies.由此构成请求头.通过登陆过的页面去访问个人微博,获取相关信息.
1.1 模拟登陆
主要使用selenium去获取控件的相关信息,并且输入用户名和密码,进行点击登录操作,一般还会出现验证码的问题,可以获取到验证码的控件,截取图像,对图像进行对比,然后完成验证码的问题.
ps 如果是个人使用,数据量不大的情况,可以手动的去浏览器的控制台中(一般是F12)去找到cookies.
1.2 scrapy框架设置
配置都在setting.py中
首先是随机请求头的问题,这里有部分可以参考:
USER_AGENT_LIST = ["Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1","Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6","Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1","Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5","Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3","Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3","Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24","Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
]
同时需要在DOWNLOADER_MIDDLEWARES属性中加入如下代码:
'sina.middlewares.RandomUserAgentMiddleware': 400
2.数据爬取
首先你要获取到你访问用户的UID,这个就不描述了.
然后构成最初是的请求:
yield Request(url="https://weibo.cn/%s/info" % uid, callback=self.parse_information)
parse_information 为下一个函数,主要是完成个人信息的抓取
然后在个人信息列表点击微博,可以看到个人的单条微博是有固定格式的url,评论以及粉丝等等都是,再通过网页解析的方式获取相关信息(可以用requests , bs4 + urllib等等)
3.具体问题
如果有具体想了解的可以评论区交流,由于项目保密性,所以无法贴出代码.
Python Scrapy框架爬取微博数据相关推荐
- [Python爬虫]使用Scrapy框架爬取微博
Scrapy框架爬取微博 简介 包 Scrapy框架 main.py(启动文件) setting.py(配置文件) pq.py(项目文件) 话题小组模块 模板 图片模块 用户模块 视频模块(未找到视频 ...
- python爬虫scrapy框架爬取网页数据_Scrapy-Python
scrapy Scrapy:Python的爬虫框架 实例Demo 抓取:汽车之家.瓜子.链家 等数据信息 版本+环境库 Python2.7 + Scrapy1.12 初窥Scrapy Scrapy是一 ...
- 利用Python Scrapy框架爬取“房天下”网站房源数据
文章目录 分析网页 获取新房.二手房.租房数据 新房数据 租房数据: 二手房数据 反反爬虫 将数据保存至MongoDB数据库 JSON格式 CSV格式 MongoDB数据库 分析网页 "房天 ...
- python scrapy框架爬取知乎提问信息
前文介绍了python的scrapy爬虫框架和登录知乎的方法. 这里介绍如何爬取知乎的问题信息,并保存到mysql数据库中. 首先,看一下我要爬取哪些内容: 如下图所示,我要爬取一个问题的6个信息: ...
- python scrapy框架爬取豆瓣top250电影篇一Windows下建立Scrapy项目,pycharm编辑
1.打开cmd,进入到项目准备所放在的文件夹,执行命令: scrapy startproject douban 然后就可以使用pycharm打开项目了 2.建立spider文件 cmd命令行进入到项目 ...
- 用scrapy框架爬取微博所有人的微博内容的
import scrapy import json import re import datetime import time from w3lib.html import remove_tags i ...
- 实现Scrapy框架爬取酷狗音乐Top100名,并存储为TXT,JSON,CSV和Excel格式数据
前言 实现Scrapy框架爬取网页数据(酷狗音乐Top100名,包括排名信息.歌手信息.歌曲名.歌曲时长) 一.创建项目 在cmd中输入: scrapy startproject kugouScrap ...
- Python Scrapy 爬虫 - 爬取多级别的页面
Python Scrapy 爬虫 - 爬取多级别的页面 互联网中众多的 scrapy 教程模板,都是爬取 下一页 → \rightarrow →下一页形式的,很少有 父级 → \rightarrow ...
- Python网络爬虫数据采集实战:Scrapy框架爬取QQ音乐存入MongoDB
通过前七章的学习,相信大家对整个爬虫有了一个比较全貌的了解 ,其中分别涉及四个案例:静态网页爬取.动态Ajax网页爬取.Selenium浏览器模拟爬取和Fillder今日头条app爬取,基本 ...
最新文章
- android view 源码分析,Android ViewPager源码详细分析
- 图解Flex开发教程
- Linux下找出吃内存的方法总结
- 国产奶粉冲击高端,飞鹤、蒙牛、合生元们的牌好不好打?
- SpringBoot 统一异常处理 ControllerAdvice
- 大厂「offer 收割机」修炼记
- oracle转成整型_Oracle中如何用SQL把字符串转换成整型
- linux节点ssh免密码登录linux节点
- 【图像处理】MATLAB:仅有噪声的复原(空间滤波)
- 程序设计实践之车辆信息管理系统
- 施乐服务器装系统闪EE,施乐7535755633755575驱动安装教程
- 软考软件测评师知识点总结
- unbuntu 安装nginx
- 微信小程序分析送积分功能如何实现_微信小程序积分商城解决方案(一)
- 血泪史: k8s Initial timeout of 40s passed.
- jmeter模拟需验签的请求时注意参数中含有特殊字符要特别处理
- 008年杀毒软件排行榜以及排行对比图
- 牛客网 2018年全国多校算法寒假训练营练习比赛(第二场) H.了断局-递推
- 如何正确使用HTTP代理?
- python之股票小工具开发学习