新浪微博爬虫(无需模拟登陆)

news/2025/1/15 19:39:06/

环境:
浏览器: chrome 64
python 3.6

ps:python新手,写得不好求轻喷
ps:这是更加纯净的微博内容页面
思路步骤:

  1. 打开微博移动端网址并登录,
    微博移动端
  2. 找到目标人物的微博,并按F12打开开发者模式,找到Network选项卡,勾选preserve log,类型选择XHR,下拉页面直至加载下一页,发现XHR中多了几项文件,打开图中的URL,如图这里写图片描述这里写图片描述
  3. 复制响应页面的内容,并用在线json工具解析可得
    这里写图片描述
    设该json为r,cards=r[‘data’][‘cards’]为微博列表,对cards中的每一个card,图片信息pics_info在card[‘mblog’][‘pics’],以此类推,获取到图片的URL之后就可以下载了

附上代码:

from urllib.request import urlopen
from bs4 import BeautifulSoup
import threading
import time
import requests
from urllib.request import urlretrieve
import re
import json
import sys
import string
import os
import socket
import urllibbase_url="https://m.weibo.cn/api/container/getIndex?containerid=2304132331498495_-_WEIBO_SECOND_PROFILE_WEIBO&luicode=10000011&lfid=2302832331498495&featurecode=20000320&page_type=03&page={}"#半藏森林socket.getdefaulttimeout=30
pics_dir='D:/pics_origin/'def get_text(card):try:text=card['mblog']['text']except:return Noneelse:if '<' in text:text=re.findall(r'(.+?)<',text)[0]#偷懒只取了微博内容的前半部分text=re.sub(':',':',text)text=text.strip()return textdef get_cards(page):url=base_url.format(page)html=requests.get(url)r=html.json()cards=r['data']['cards']print(len(cards))return cardsdef save_pics(pics_info,text):i=0for pic_info in pics_info:pic_url=pic_info['large']['url']#原图#pic_url=pic_info['url']#低清图pic_path=pics_dir+text+'_%d.jpg'%iif os.path.exists(pics_dir+text+'_%d.jpg'%i):print(pics_dir+text+'_%d.jpg已存在'%i)i+=1continuetry:#下载图片with open(pic_path,'wb') as f:for chunk in requests.get(pic_url,stream=True).iter_content():f.write(chunk)#urlretrieve(pic_url,pics_dir+text+'_%d.jpg'%i)#except socket.timeout:#    print(text+'_%d保存失败'%i)#except urllib.error.ContentTooShortError:#    urlretrieve(pic_url,pics_dir+text+'_%d.jpg'%i)except:print(text+'_%d保存失败'%i)else:print(text+'_%d保存成功'%i)i+=1def check_dir():if not os.path.exists(pics_dir):os.mkdir(pics_dir)class MyThread(threading.Thread):def __init__(self,pics_info,text):threading.Thread.__init__(self)self.pics_info=pics_infoself.text=textdef run(self):save_pics(self.pics_info,self.text)check_dir()
page=1
while True:cards=get_cards(page)if len(cards)>1:threads=[]for card in cards:#下载每个card里面的图片text=get_text(card)try:pics_info=card['mblog']['pics']except:passelse:#save_pics(pics_info)thread=MyThread(pics_info,text)threads.append(thread)thread.start()for thread in threads:thread.join()page+=1time.sleep(1)else:break

http://www.ppmy.cn/news/897702.html

相关文章

关于新浪微博模拟登陆的一些小研究.

前段时间有空&#xff0c;分析了一下新浪微博登陆验证&#xff0c;结合几篇文章摸了一些门道&#xff0c;但是最近比较忙,没时间继续深究,就写一下分析的过程和结果,,供新手朋友参考.大神请无视我. 关于新浪SSO单点登录的技术实现之类的,请自行脑补,以我的水平也无法深入浅出的…

关于Copilot一直登录不上(试一下学校内网吧)

关于Copilot登录不上踩的坑&#xff08;验证后一直在读条、验证信息无效等&#xff09; 1.关于Copilot登录不上踩的坑&#xff1a;http://t.csdn.cn/Drgks踩坑记录 2.省份不一样 或者说不在学校 1.关于Copilot登录不上踩的坑&#xff1a;http://t.csdn.cn/Drgks 请移步此帖子↓…

服务器维护中无法登陆游戏,贝比岛游戏出现无法登陆怎么办 解决方案一览

贝比岛游戏出现无法登陆怎么办 解决方案一览。贝比岛是一款非常好玩的游戏&#xff0c;许多玩家被其优秀的内容和有趣的玩法所吸引。但是近日有小伙伴反应贝比岛游戏出现无法登陆&#xff0c;小编这里整理了一些贝比岛游戏出现无法登陆的原因和方法&#xff0c;下面就分享给大家…

snoopy模拟登陆新浪微博

1. snoopy官网下载snoopy框架 2. 设置$snoopy->agent 可以利用$_SERVER查看浏览器信息 3. $snoopy->referer "http://www.weibo.com"; 4. $snoopy->rawheaders[COOKIE]“your weibo cookie” //chrome或firefox浏览器都有查看cookie的插件 5. $snoopy->…

如何登录新浪微博html5,新浪微博怎么登陆

现在很多朋友都喜欢用新浪微博&#xff0c;还可以与百度的用户绑定。下面是学习啦小编收集整理的新浪微博怎么登陆&#xff0c;希望对大家有帮助~~ 新浪微博登陆的方法 工具/原料 电脑 新浪微博软件 方法一&#xff1a;微薄桌面登陆 1在安装好新浪微博桌面软件的情况下&#xf…

Python模拟登陆新浪微博

使用Python编写一个模拟登陆的程序。讲解与程序如下&#xff1a; 1、主函数&#xff08;WeiboMain.py&#xff09;&#xff1a; import urllib2 import cookielibimport WeiboEncode import WeiboSearchif __name__ __main__:weiboLogin WeiboLogin(gmail.com, )#邮箱&…

新浪微博登陆页面html代码,新浪微博登陆页面 找到我的位置,选择编辑;

准备工具&#xff1a;浏览器&#xff0c;电脑 1.打开浏览器&#xff0c;在浏览器进入微博主页面中&#xff0c;在微博主页面中找到右上方设置选项&#xff0c;点击该选项进入至设置主页面中。 2.在设置主页面中找到右上方退出选项&#xff0c;点击该选项进入退出当前登陆账号等…

模拟新浪微博登陆

新浪微博最近,更改了登陆加密过程,导致之前的模拟的 hex_sha1加密方式失效了,recode返回状态不再是0.现在新浪微博使用的加密方式是RAS公钥加密过程。下面我们来分析一下sina微博的加密过程。新浪微博的登陆过程和别的网站不同之处就只是他对密码的加密过程有点繁琐&#xff0…