首页 > 编程语言 >基于Python实现的微博POI信息爬取

基于Python实现的微博POI信息爬取

时间:2025-01-15 11:29:00浏览次数:3  
标签:get Python title ret 爬取 微博 poiid

1.poiid获取

可通过微博网页搜索对应关键词获取,见下图红框(本文皆以上海体育馆为例),当然还有其他方式获取,后续介绍。

2.移动端网页接口

(1)爬取接口

ret = requests.get(f'https://m.weibo.cn/api/container/getIndex?containerid=2306570042{poiid}').json()

通过get方式访问,poiid填入前文获取值。

(2)返回结果

{
    "ok": 1,
    "data": {
        "cardlistInfo": {
            "cardlist_title": "上海体育馆",
            "sub_title": "月签到1181人  上海市  综合体育馆",
            "address": "漕溪北路1111号",
            ...
        ],
        ...
    }
}

"data"下的"ok"可判断该地点存在与否, "cardlistInfo"为POI具体信息,各字段名称基本上是自解释的。如cardlist_title为名称,sub_title中包含城市与类别等,address为具体地址。

3.weibo.com网页

为POI详情页,并非json格式返回接口,而是直接解析返回的HTML内容。

(1)爬取接口

ret = requests.get("https://weibo.com/p/100101" + poiid, headers={"Cookie":cookie})

通过get方式访问,poiid填入前文获取值,并且需要传入登录后的cookie。

(2)返回结果

返回结果是HTML混杂着Javascript,结构较复杂,暂不展示,在此仅提供通过正则表达式解析逻辑:

match1 = re.findall("<h1 title=.*?username.*?>(.*?)<", ret.text, flags=re.DOTALL)
match2 = re.findall("p_txt.*?: (.*?)<", ret.text, flags=re.DOTALL)
if len(match1) == 0 and len(match2) == 0:
    return None

name = typ = addr = ""
if len(match1) > 0:
    name = match1[0]

if len(match2) > 0:
    typ = match2[0]

if len(match2) > 1:
    addr = match2[1]

若该地点已不存在,则会重定向到以下页面:

此时可通过判断返回的HTTP状态码以及Location内容来判断:

if ret.status_code == 302 and "pagenotfound" in ret.headers['Location']:
    return None

微博爬虫系列:

基于Python实现的微博用户信息爬取

基于python实现的指定POI微博签到数据爬取

基于移动端网页接口的用户微博爬虫

标签:get,Python,title,ret,爬取,微博,poiid
From: https://blog.csdn.net/yugnahz/article/details/145096541

相关文章

  • 【Python】拆分、合并PDF
    1.拆分#importsys#sys.path.append(r"c:\users\lenovo\appdata\local\programs\python\python312\lib\site-packages")#这里包的安装目录不同,将其加入系统变量,目录相同不需要这个fromPyPDF3importPdfFileWriter,PdfFileReaderinput_pdf=PdfFileReader(r"F:\需要拆分......
  • Python2.x和Python3.x的区别?
     Python3.x中,print语句没有了,取而代之的是print()函数,print语句Python编译器会报错Python2.x默认采用ASCII编码,而Python3.x默认采用UTF-8编码,可以很好的支持中文或者其它非英文字符。Python2.x中,/运算符的使用方式和Java/C语言累死,整数相除得整数,浮点数相除保留小......
  • Python包管理uv使用
    介绍用Rust编写的一个极其快速的Python包和项目管理器。比pip快10-100倍。安装和管理Python版本。运行和安装Python应用程序。通过curl或pip,无需Rust或Python即可安装。支持macOS、Linux和Windows。安装使用独立安装#macOS/Linuxcurl-LsSfhttps:/......
  • Python+Django的框架药品购买系统(Pycharm Flask Django Vue mysql)
    收藏关注不迷路,防止下次找不到!文章末尾有惊喜项目介绍Python+Django的框架药品购买系统(PycharmFlaskDjangoVuemysql)项目展示详细视频演示请联系我获取更详细的演示视频,相识就是缘分,欢迎合作!!!所用技术栈前端vue.js框架支持:django数据库:mysql......
  • Python+Django的智能宾馆预定系统(Pycharm Flask Django Vue mysql)
    收藏关注不迷路,防止下次找不到!文章末尾有惊喜项目介绍Python+Django的智能宾馆预定系统(PycharmFlaskDjangoVuemysql)项目展示详细视频演示请联系我获取更详细的演示视频,相识就是缘分,欢迎合作!!!所用技术栈前端vue.js框架支持:django数据库:mysql5.7数......
  • zenoh flow python sdk 简单说明
    zenohflow是zenoh团队提供的面向dataflow的编程框架,可以提供灵活的进行数据处理,zenohflow提供了基于rust以及python的扩展能力,我们只需要进行flow的yaml定义就可以灵活的进行数据处理,基于rust的开发模式可能比较费事,而且有难度,zenoh-flow-python是基于python快速开发......
  • 跟我一起学 Python 数据处理(三十八):数据案例实战与存储要点解析
    跟我一起学Python数据处理(三十八):数据案例实战与存储要点解析在数据处理的学习之旅中,我们致力于与各位共同成长,探索数据的奥秘。上两篇博客分别介绍了多种数据来源和获取方法,今天我们将通过实际案例进一步深化理解,并着重探讨数据存储方面的关键知识。一、案例深度剖析(一......
  • 跟我一起学 Python 数据处理(三十九):数据库世界的探秘之旅
    跟我一起学Python数据处理(三十九):数据库世界的探秘之旅在数据的广袤天地中,我们始终秉持着共同学习、共同进步的理念,希望能引领大家逐步深入Python数据处理的核心领域。上一篇博客我们了解了数据存储的基础要点和案例实战,今天将聚焦于数据库这个关键部分,为大家详细剖析其......
  • python脚本:批量修改图片名称
    运用演示:  步骤:1.将需要修改名称的图片放在一个文件夹中,选择此文件夹2.输入命名格式,进行重命名代码:直接将下列代码复制到python编译器中即可importosfrompathlibimportPathimporttkinterastkfromtkinterimportfiledialog,messageboxclassImageRen......
  • python开发安卓程序
    资料Python利用appium实现模拟手机滑动操控的操作_python滑动手机屏幕-CSDN博客直接使用库:appium其他依赖:编译环境:打包工具:新技能:用Python写一个安卓APP-逆锋起笔-博客园(cnblogs.com)直接使用库:kivy其他依赖:python -m pip install docutils pygmentspypiwin......