由于最近没事在学python,正好最近也想趴下新浪微博上边的一些数据,在这里主要爬去的是一个人的粉丝具体信息(微博昵称,个人介绍,地址,通过什么方式进行关注),所以就学以致用,通过python来爬去微博上边的数据。

首先先说下环境啊,使用的是python3.5,然后使用的框架有:

requests:用来获取html页面。

BeautifulSoup:用来进行html的解析,是一个在python爬虫中非常好用的一个工具,并且有中文的说明文档,链接是:https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html。可以看其中具体的一些函数的使用的方法。

通过这两个,则就可以实现我们想要实现的功能了。

然后第二步,则是我们需要模拟微博进行登录,因为你会发现,如果你不登录,是无法看一个人的具体的粉丝信息的,因此我们需要自己登录下新浪微博,然后通过调试工具,把cookie复制出来,这样才能够进行爬虫。,怎么获取cookie,在这进行一个简单的介绍,登陆后看到个人主页后,打开开发者工具,然后选择network:

然后复制下这个cookie,在爬虫中需要用到,接下来就上代码了:

主程序类代码:

import requests
from html.parser import HTMLParser
import person
from bs4 import BeautifulSoup
import json
#获取的cookie值存放在这
myHeader = {"Cookie":"SINAGLOBAL=1151648924265.729.1510207774298; YF-V5-G0=a9b587b1791ab233f24db4e09dad383c; login_sid_t=663888f6033b6f4a8f5fa48b26d9eb17; YF-Ugrow-G0=ea90f703b7694b74b62d38420b5273df; _s_tentry=passport.weibo.com; Apache=9283625770163.1.1512087277478; ULV=1512087277483:2:1:1:9283625770163.1.1512087277478:1510207774304; SSOLoginState=1512087292; wvr=6; YF-Page-G0=451b3eb7a5a4008f8b81de1fcc8cf90e; cross_origin_proto=SSL; WBStorage=82ca67f06fa80da0|undefined; crossidccode=CODE-gz-1ElEPq-16RrfZ-qpysbLqGTWJetzH095150; SCF=AnQFFpBKBne2YCQtu52G1zEuEpkY1WI_QdgCdIs-ANt1_wzGQ0_VgvzYW7PLnswMwwJgI9T3YeRDGsWhfOwoLBs.; SUB=_2A253IOm1DeThGeNG6lsU-CjOzTWIHXVUVFx9rDV8PUNbmtBeLWTSkW9NS2IjRFgpnHs1R3f_H3nB67BbC--9b_Hb; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9W5fUsSPaZjP3cB4EXR8M3gT5JpX5KzhUgL.Fo-ReK.f1hqESo.2dJLoIEXLxK.L1hzLBKeLxK-LBo.LBoBLxKML1-zL1-zLxK-LBKBL12qLxK-L1K-L122t; SUHB=0wnlry4ys0tunb; ALF=1543884132; wb_cusLike_5819586269=N; UOR=,,login.sina.com.cn"}
#要爬去的账号的粉丝列表页面的地址r = requests.get('https://weibo.com/p/1005051678105910/follow?relate=fans&from=100505&wvr=6&mod=headfans&current=fans#place',headers=myHeader)
f = open("test.html", "w", encoding="UTF-8")
parser = HTMLParser()
parser.feed(r.text)
htmlStr = r.text# 通过script来切割后边的几个通过js来显示的json数组,通过观看源代码
fansStr = htmlStr.split("</script>")
#因为在测试的时候,发现微博每一次返回的dom的顺序不一样,粉丝列表的dom和一个其他内容的dom的位置一直交替,所以在这加了一个判断
tmpJson = fansStr[-2][17:-1] if fansStr[-2][17:-1].__len__()>fansStr[-3][17:-1].__len__() else fansStr[-3][17:-1]
dict = json.loads(tmpJson)soup = BeautifulSoup(dict['html'], 'html')soup.prettify()
f.write(soup.prettify())for divTag in soup.find_all('div'):if divTag['class'] == ["follow_inner"]:followTag = divTagif locals().get("followTag"):for personTag in followTag.find_all('dl'):p = person.person(personTag)print(p.__dict__)

  

person类代码:

在这中间进行主要的解析

from bs4 import BeautifulSoup

#具体解析在这
class person(object):def __init__(self, personTag = None):self.analysis(personTag)def analysis(self,personTag):self.analysisName(personTag)self.analysisFollowAndFansNumber(personTag)self.analysisCity(personTag)self.analysisIntroduce(personTag)self.analysisFollowWay(personTag)self.analysisID(personTag)def analysisName(self,personTag):self.name = personTag.div.a.stringdef analysisFollowAndFansNumber(self,personTag):for divTag in personTag.find_all('div'):if divTag['class'] == ["info_connect"]:infoTag = divTagif locals().get("infoTag"):self.followNumber = infoTag.find_all('span')[0].em.stringself.fansNumber = infoTag.find_all('span')[1].em.a.stringself.assay = infoTag.find_all('span')[2].em.a.stringdef analysisCity(self,personTag):for divTag in personTag.find_all('div'):if divTag['class'] == ['info_add']:addressTag = divTagif locals().get('addressTag'):self.address = addressTag.span.stringdef analysisIntroduce(self,personTag):for divTag in personTag.find_all('div'):if divTag['class'] == ['info_intro']:introduceTag = divTagif locals().get('introduceTag'):self.introduce = introduceTag.span.stringdef analysisFollowWay(self,personTag):for divTag in personTag.find_all('div'):if divTag['class'] == ['info_from']:fromTag = divTagif locals().get('fromTag'):self.fromInfo = fromTag.a.stringdef analysisID(self,personTag):personRel = personTag.dt.a['href']self.id = personRel[personRel.find('=')+1:-5]+personRel[3:personRel.find('?')]

在这里爬去的是孙俪下边的第一页列表的微博的粉丝,结果如下截图:

其实这个相对还是比较简单的,主要比较麻烦的是需要看新浪的html的源代码,需要了解其显示的规律,然后使用beautiful soup进行解析节点,获取数据。

  

转载于:https://www.cnblogs.com/cmai/p/7967847.html

使用python进行新浪微博粉丝爬虫相关推荐

  1. 如何利用python刷微博粉丝_使用python进行新浪微博粉丝爬虫

    由于最近没事在学python,正好最近也想趴下新浪微博上边的一些数据,在这里主要爬去的是一个人的粉丝具体信息(微博昵称,个人介绍,地址,通过什么方式进行关注),所以就学以致用,通过python来爬去微 ...

  2. 【期刊】基于 Python 的新浪微博数据爬虫

    来源:Journal of Computer Applications 作者:周中华,张惠然,谢 江 0 引言 计算机技术的进步使人们的生活方式逐渐发生改变,社 交网络就是一个非常突出的例子.越来越多 ...

  3. python刷微博转发_一个简单的python刷新浪微博粉丝小程序

    代码简陋没有什么技术,还有个txt的配置文件才可以用.但是配置文件不发出来了.只要你自己好好看代码很容易猜得到.希望大家不要拿去刷了.因为实在是没意思. 代码中需要用到的相关python模块方法有: ...

  4. python刷微博关注_[代码全屏查看]-python刷新浪微博粉丝

    [1].[代码] [Python]代码 # -*- coding: utf-8 -*- import urllib, urllib2, cookielib, hashlib,threading imp ...

  5. 新浪微博粉丝——爬虫涨粉技巧

    新浪微博现在对待粉丝就像对待商业机密 很难有漏洞 以下代码说明技巧 首先第一部浏览器输入红色高亮显示的代码 <?php qufen.ren /*** [Discuz!] (C)2001-2099 ...

  6. 新浪微博粉丝爬虫-wap站只能爬取20页-

    由上图可见:微博已经视粉丝分布为商业机密,故爬取难度越来越大.无论web上爬,还是手机上爬,均受限. 两种方式:手动爬+微博API爬. 本文展示手动爬,以李易峰的粉丝分布为基础,只能爬取20页,源码如 ...

  7. python怎么爬取新浪微博数据中心_基于Python的新浪微博位置数据获取方法研究....

    [1] 新浪微博数据中心.2017微博用户发展报告[EB/OL].[2017-12-25]. http://data.weibo.com/report/reportDetail?id=404. [2] ...

  8. python微博评论爬虫_详解用python写网络爬虫-爬取新浪微博评论 基于Python的新浪微博爬虫研究...

    怎样爬取新浪微博的评论信息 针对八爪鱼在微博的应用上,除了用户信息之外还包括话题内容方面的采集,目前绝大多数企业均在微博设有官方微博,八爪鱼可以协助企业快速及时的抓取与企业产品相关联的话题信息,规则市 ...

  9. python微博爬虫分析_基于Python的新浪微博爬虫研究

    基于 Python 的新浪微博爬虫研究 吴剑兰 (江苏警官学院,江苏 南京 210031 ) [摘 要] 摘 要:对比新浪提供的 API 及传统的爬虫方式获取微博的优缺点, 采用模拟登陆和网页解析技术 ...

最新文章

  1. xml信息管理系统_WPF信息管理系统项目实战教程二:使用XAML实现页面布局
  2. 动手打造自己强大的右键菜单
  3. Android Permission(授权)大全
  4. sysctl mysql_服务器优化——Sysctl、Apache、MySQL
  5. animate方法 jQuery中元素的创建 创建十个p标签 创建列表 动态创建列表
  6. First Impression on BBED: recover deleted rows
  7. python管理数据库设计_Pycharm+Django+Python+MySQL开发 后台管理数据库
  8. 计算机基本网络测试命令实验报告,网络连通性测试与网络命令验证实验报告
  9. ZYI PHP授权系统开源
  10. LeetCode 121. Best Time to Buy and Sell Stock
  11. dnf服务器延迟怎么看,dnf如何判断自己网络还是服务器出问题_dnf判断自己网络还是服务器出问题详细介绍_游戏堡...
  12. goland配置mysql失败_GoLand配置数据库、远程host以及远程调试
  13. C4996 'sprintf': This function or variable may be unsafe.
  14. 计算机网络传输速率单位MB,计算机网络中,传输速率MB/s和Gb/s如何换算?
  15. java反序列化漏洞POP查找_Laravel8反序列化POP链分析挖掘
  16. jieba分词词性对照表
  17. Qt编写安防视频监控系统46-视频存储
  18. php解决中文乱码,PHP中文乱码的常见解决方法总结
  19. 【MYSQL】MYSQL 主要函数
  20. java考勤系统数据库_java考勤管理系统数据库实现

热门文章

  1. OC 基础 UITextField
  2. Matlab------------怎么取一个复数的实部和虚部
  3. 数据结构笔记——自用
  4. Redis 常见面试题
  5. 我的Go+语言初体验——祝福留言小系统,让她也可以感受到你的祝福
  6. 写了上百篇文章后,对文章排版和文章曝光的一些思考
  7. VM15安装MacOS10.15.1系统
  8. QT串口助手-ZUA课设
  9. (5)泪目写下唯一成功之MQ2传感器数据读取
  10. 像逛淘宝一样“办政事”:阿里云在政务领域的实践