在好例子网,分享、交流、成长!
您当前所在位置:首页Python 开发实例Python语言基础 → 微博内容爬取

微博内容爬取

Python语言基础

下载此实例
  • 开发语言:Python
  • 实例大小:3.59KB
  • 下载次数:16
  • 浏览次数:127
  • 发布时间:2021-02-08
  • 实例类别:Python语言基础
  • 发 布 人:849343218
  • 文件格式:.py
  • 所需积分:2
 相关标签: 爬取 微博

实例介绍

【实例简介】

通过微博关键词搜索爬取某区域的微博内容。
【实例截图】
【核心代码】

import requests from bs4 import BeautifulSoup import openpyxl import re import time # 获取页面内容 def getHTMLText(url): try:
        kv = {"User-Agent": "Mozilla/5.0",  "cookie": """"""}
        r = requests.get(url, headers=kv)
        r.raise_for_status()
        r.encoding = 'utf-8'  return r.text except: return ""   # 对获取的页面内容进行解析,两个变量一个是结果的列表类型,一个是html页面的信息 def parsePage(ilt,html,):
    soup = BeautifulSoup(html, 'html.parser')
    a = soup.find_all('a')
    tlt = [] #名字加进去  for i in a: try:
            name = i.attrs['nick-name']
            tlt.append(name) except: continue   p = soup.find_all(name='p', attrs={"class": "txt"})
    plt = [] #内容加进去  for j in p: try:
            txt = j.text if '展开全文' not in txt:
                txt = txt.replace(' ', '')
                plt.append(txt) else: continue  except: continue  # 首先找所有有nick_name属性的a标签,再从这些a标签中找每个人微博的uid  nick_name = re.compile(r'.*?')
    n_a = soup.find_all('a', attrs={'nick-name': nick_name})
    ult = [] for m in n_a: try:
            href = m.attrs['href'] # 属性href中有个人微博网址  ult.append(re.findall(r'\d{10}', href)[0]) #ult是网址列表  except: continue    alt = [] #地址列表  for weibo in ult:
        url = 'https://weibo.com/p/100505'   weibo   '/info?mod=pedit_more'  html2 = getHTMLText(url) try: if html2 == "":
                alt.append('非西安') else:
                soup = BeautifulSoup(html2, 'html.parser')
                place = soup.find(string=re.compile('所在地')) if place =='':
                    address = '非西安'  else: if'西安' in place:
                        address = '西安'  else:
                        address = '非西安'  alt.append(address) except:
            alt.append('非西安') continue  time.sleep(0.2) # 把两个列表变成相对应的一对  for n in range(len(tlt)):
        txt = plt[n]
        name = tlt[n]
        adress = alt[n] print(name,adress)
        ilt.append([name, txt,adress]) def main():
    keywords = '回坊'  depth = 36 # 爬取的页数  start_time='2016-01-01:2016-05-02'  start_url = 'https://s.weibo.com/weibo?q='   keywords   '&scope=ori&suball=1&timescope=custom:'   start_time   '&Refer=g'  infoList = [] for i in range(depth):
        i  = 1  try:
            url =  start_url   '&page=' str(i)
            html = getHTMLText(url) # 获得相应网页内容  parsePage(infoList,html) print("" str(i) "") # 每个网页内容的解析过程  time.sleep(5) except: print("内容有问题") continue   # 打印列表内容  print(infoList)
    wb = openpyxl.Workbook()
    ws = wb.create_sheet("sheet1") for d in range(len(infoList)):
        e=infoList[d]
        dol=d 1  ws.cell(row=dol,column=1).value = e[0]
        ws.cell(row=dol,column=2).value = e[1]
        ws.cell(row=dol,column=3).value = e[2]
    wb.save('回坊.xlsx') print('保存成功')
    wb.close()
main()

标签: 爬取 微博

实例下载地址

微博内容爬取

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警