-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框架爬取微博数据相关推荐

  1. [Python爬虫]使用Scrapy框架爬取微博

    Scrapy框架爬取微博 简介 包 Scrapy框架 main.py(启动文件) setting.py(配置文件) pq.py(项目文件) 话题小组模块 模板 图片模块 用户模块 视频模块(未找到视频 ...

  2. python爬虫scrapy框架爬取网页数据_Scrapy-Python

    scrapy Scrapy:Python的爬虫框架 实例Demo 抓取:汽车之家.瓜子.链家 等数据信息 版本+环境库 Python2.7 + Scrapy1.12 初窥Scrapy Scrapy是一 ...

  3. 利用Python Scrapy框架爬取“房天下”网站房源数据

    文章目录 分析网页 获取新房.二手房.租房数据 新房数据 租房数据: 二手房数据 反反爬虫 将数据保存至MongoDB数据库 JSON格式 CSV格式 MongoDB数据库 分析网页 "房天 ...

  4. python scrapy框架爬取知乎提问信息

    前文介绍了python的scrapy爬虫框架和登录知乎的方法. 这里介绍如何爬取知乎的问题信息,并保存到mysql数据库中. 首先,看一下我要爬取哪些内容: 如下图所示,我要爬取一个问题的6个信息: ...

  5. python scrapy框架爬取豆瓣top250电影篇一Windows下建立Scrapy项目,pycharm编辑

    1.打开cmd,进入到项目准备所放在的文件夹,执行命令: scrapy startproject douban 然后就可以使用pycharm打开项目了 2.建立spider文件 cmd命令行进入到项目 ...

  6. 用scrapy框架爬取微博所有人的微博内容的

    import scrapy import json import re import datetime import time from w3lib.html import remove_tags i ...

  7. 实现Scrapy框架爬取酷狗音乐Top100名,并存储为TXT,JSON,CSV和Excel格式数据

    前言 实现Scrapy框架爬取网页数据(酷狗音乐Top100名,包括排名信息.歌手信息.歌曲名.歌曲时长) 一.创建项目 在cmd中输入: scrapy startproject kugouScrap ...

  8. Python Scrapy 爬虫 - 爬取多级别的页面

    Python Scrapy 爬虫 - 爬取多级别的页面 互联网中众多的 scrapy 教程模板,都是爬取 下一页 → \rightarrow →下一页形式的,很少有 父级 → \rightarrow ...

  9. Python网络爬虫数据采集实战:Scrapy框架爬取QQ音乐存入MongoDB

    ​    通过前七章的学习,相信大家对整个爬虫有了一个比较全貌的了解 ,其中分别涉及四个案例:静态网页爬取.动态Ajax网页爬取.Selenium浏览器模拟爬取和Fillder今日头条app爬取,基本 ...

最新文章

  1. android view 源码分析,Android ViewPager源码详细分析
  2. 图解Flex开发教程
  3. Linux下找出吃内存的方法总结
  4. 国产奶粉冲击高端,飞鹤、蒙牛、合生元们的牌好不好打?
  5. SpringBoot 统一异常处理 ControllerAdvice
  6. 大厂「offer 收割机」修炼记
  7. oracle转成整型_Oracle中如何用SQL把字符串转换成整型
  8. linux节点ssh免密码登录linux节点
  9. 【图像处理】MATLAB:仅有噪声的复原(空间滤波)
  10. 程序设计实践之车辆信息管理系统
  11. 施乐服务器装系统闪EE,施乐7535755633755575驱动安装教程
  12. 软考软件测评师知识点总结
  13. unbuntu 安装nginx
  14. 微信小程序分析送积分功能如何实现_微信小程序积分商城解决方案(一)
  15. 血泪史: k8s Initial timeout of 40s passed.
  16. jmeter模拟需验签的请求时注意参数中含有特殊字符要特别处理
  17. 008年杀毒软件排行榜以及排行对比图
  18. 牛客网 2018年全国多校算法寒假训练营练习比赛(第二场) H.了断局-递推
  19. 如何正确使用HTTP代理?
  20. python之股票小工具开发学习

热门文章

  1. 项目分享丨20行Python代码,无损压缩千百张图片!
  2. Oracle安装时安装界面为灰色卡住不动,Oracle安装过程中常遇到的问题
  3. Samba服务器的配置与使用
  4. 腾讯QQ浏览器2014正式版 v7.7.0.23898 官方免费版
  5. 用C++写“生日快乐”祝福
  6. uc-osII系统移植
  7. 面霸可以练成,程序员如何成功面试?
  8. 施努卡:机器人视觉案例(工业机器人的案例)
  9. 错误代码0X80004005 无法访问共享计算机
  10. API接口通过链接<a href>获取qq头像