由于最近没事在学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("")

#因为在测试的时候,发现微博每一次返回的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 = divTag

if 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.string

def analysisFollowAndFansNumber(self,personTag):

for divTag in personTag.find_all('div'):

if divTag['class'] == ["info_connect"]:

infoTag = divTag

if locals().get("infoTag"):

self.followNumber = infoTag.find_all('span')[0].em.string

self.fansNumber = infoTag.find_all('span')[1].em.a.string

self.assay = infoTag.find_all('span')[2].em.a.string

def analysisCity(self,personTag):

for divTag in personTag.find_all('div'):

if divTag['class'] == ['info_add']:

addressTag = divTag

if locals().get('addressTag'):

self.address = addressTag.span.string

def analysisIntroduce(self,personTag):

for divTag in personTag.find_all('div'):

if divTag['class'] == ['info_intro']:

introduceTag = divTag

if locals().get('introduceTag'):

self.introduce = introduceTag.span.string

def analysisFollowWay(self,personTag):

for divTag in personTag.find_all('div'):

if divTag['class'] == ['info_from']:

fromTag = divTag

if locals().get('fromTag'):

self.fromInfo = fromTag.a.string

def analysisID(self,personTag):

personRel = personTag.dt.a['href']

self.id = personRel[personRel.find('=')+1:-5]+personRel[3:personRel.find('?')]

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

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

如何利用python刷微博粉丝_使用python进行新浪微博粉丝爬虫相关推荐

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

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

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

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

  3. python刷抖音_用Python生成抖音字符视频!

    抖音字符视频在去年火过一段时间. 反正我是始终忘不了那段极乐净土的音乐... 这一次自己也来实现一波,做一个字符视频出来. 主要用到的库有cv2,pillow库. 原视频如下,直接抖音下载的,妥妥的水 ...

  4. 用python刷微信阅读_使用python让微信读书自动翻页

    微信读书目前是朋友圈最流行的一款读书app,但是很遗憾微信读书没有自动翻页模式,不过这可难不倒程序员,写个程序让它自动翻页不久好了. 而且微信读书有这样一个激励政策:"每阅读30分钟可兑1赠 ...

  5. python刷题总结_【python刷题】差分数组

    前缀和主要适用的场景是原始数组不会被修改的情况下,频繁查询某个区间的累加和. 差分数组的主要适用场景是频繁对原始数组的某个区间的元素进行增减. class Difference: def __init ...

  6. python刷火车票脚本_使用python脚本实现查询火车票工具

    使用python脚本实现查询火车票信息的效果图如下: 实现的代码: # coding: utf-8 """命令行火车票查看器 Usage: tickets [-gdtkz ...

  7. python刷题技巧_【python刷题】分治法

    归并排序 def merge(le, ri): res = [] i = j = 0 while i < len(le) and j < len(ri): if le[i] < ri ...

  8. 如何利用python刷微博粉丝最多的明星_新手用微博,如何迅速增大粉丝数量?

    现在微博的用户是非常多的,也是非常火的,如果你只是个人单纯的兴趣玩微博的话,是没有必要进行花钱推广的,因为你更多的是一种生活分享,而不是商业化运作.当然,如果说你想商业化运作,想打造自己的个人ip,拥 ...

  9. python爬微博关键字_一个简单的python爬虫实践,爬取包含关键词的新浪微博

    此项目主要功能是通过微博"搜索"页面,每天自动爬取所有包含自定list中词汇的微博原数据.低速可控,简单粗暴,适合用来有针对性的搜集数据量不是很大的包含关键词的微博,每日可爬3-6 ...

  10. 用python刷微信阅读_老司机用python脚本刷微信读书的时长

    微信读书有一个鼓励机制, 一周阅读5小时可兑换10书币,每周日晚清空一周的总读书时长,没兑换的时长不计入下一周(1书币 == 1块钱) 作为一个经常加班的程序猿, 一周刷5个小时, 有点困难, 所以只 ...

最新文章

  1. Anacanda的安装
  2. 假期《JAVA技术》预备作业01
  3. 算法1:找出第一个非重复字符在字符串中的位置
  4. MATLAB工作环境
  5. 如何修改Win11睡眠时间
  6. 基于AS3的水果机小游戏
  7. vue使用slot分发内容与react使用prop分发内容
  8. 细说进程、应用程序域与上下文之间的关系(三)—— 深入了解.NET上下文
  9. 写会议纪要必备的录音转文字软件推荐,让你再也不用担心职场会议
  10. 零基础做一个微信答题小程序(一)
  11. 无线网络何连不到服务器,关于电脑宾馆连接不上无线网络的解决方法
  12. shell工具finalShell
  13. 债券收益率预测模型_基于时间序列模型的可转换债券收益率的实证研究
  14. 修改win7计算机mac,win7如何在注册表改网卡mac
  15. uni-app 二维码生成器分享
  16. webshell检测方式深度剖析---RASP(taint扩展)
  17. 工具善其事,必先被苦逼的其器所钝伤然后打磨之才能利其器
  18. 【华为上机真题】分子弹
  19. LaTeX长表格自动换行(longtable)
  20. 如何在CentOS 7中设置或更改主机名

热门文章

  1. 想学爬虫的同学看过来,手把手教你利用Python网络爬虫获取APP推广信息
  2. 【BRCM】博通 esdk6.5ga rootfs-rw
  3. EBOOT架构及流程
  4. AudioRecord
  5. Bugku之Flask_FileUpload
  6. django 输入城市名称获取相应城市即将上映电影
  7. Cloudify Cloud foundry
  8. 植入「电子神经」,瘫痪小鼠也能踢球,鲍哲南团队成果登Nature子刊
  9. 从富士康普工转行产品经理,月薪翻了3倍
  10. Oracle动态授权用户权限