python 爬取热搜网教程 (上)

12 篇文章 0 订阅
10 篇文章 1 订阅

看系列教程可以进我的个人主页
本教程使用Chrome浏览器

分析

打开热搜网,URL:

https://s.weibo.com/top/summary?cate=realtimehot

F12搜索:

每条都在tbody标签下

html分析

  • 找到tbody下每个tr标签(第一个排除)
    • tr标签内的class为td-02的td标签存放热搜标题
    • tr标签内的class为td-02的td标签内span标签存放热搜热度

代码

下包

pip install requests
pip install beautifulsoup4
pip install retry

python代码

import retry
import requests
from bs4 import BeautifulSoup
@retry.retry()  # 使用retry(因为我的老请求错误)
def hot_search(headers=None, parser='html.parser', encoding='utf-8'):
    url = 'https://s.weibo.com/top/summary?cate=realtimehot'
    if headers is None:
        headers = {
            'User-Agent': ('Mozilla/5.0 (Windows NT 10.0; WOW64) '
                           'AppleWebKit/537.36 (KHTML, like Gecko) '
                           'Chrome/75.0.3770.100 Safari/537.36')
        }  # 伪装请求头
    response = requests.get(url, headers=headers)  # 请求
    response.encoding = encoding
    soup = BeautifulSoup(response.text, parser)  # beautifulsoup解析
    div = soup.find('div', attrs={'class': 'm-main'})
    div = div.find('div', attrs={'class': 'data'})
    table = div.find('table')
    tbody = table.find('tbody')
    items = tbody.find_all('tr')    
    hots = []
    numbers = []
    for index, tr in enumerate(items):
        if index == 0:
            continue
        td = tr.find('td', attrs={'class': 'td-02'})  # 获取class为td-02的td
        a = td.find('a')
        span = td.find('span')
        hots.append(a.string)
        numbers.append(int(span.string))    
    return hots, numbers

结果:

(['侯志慧夺下第二金', '王璐瑶仍是浙江了不起的姑娘', '看侯志慧拿起保温杯就知道稳了', '吴京是东京奥运会场外最忙的人', '杨倩摘得东京奥运首金', '侯志慧格局', '王霜打入女足东京奥运首球', '奥运会金牌 保研', '侯志慧闻风油精 东方的神秘力量', '比利时举重选手哭了', '江浙沪连发196个气象灾害预警', '杨倩回应比心', '侯志慧举起94公斤妈妈爆哭', '教练说没考虑破纪录', '南京三次核酸呈阴性可恢复绿码', '杨洋恭喜杨倩夺冠', '许佳琪洗肥肠洗到上头', '朱亚文易烊千玺中国医生花絮', '奥运冠军说生娃后武功全废', '妈妈说杨倩还是大学生要努力学习', '奥运会金牌都是黄金做的吗', '贵人鸟 捐款', '王霜帽子戏法', '吴静钰无缘四强', '鸿星尔克7月23日销量增长超52倍', 'iPhone13进入量产备货期', '郑州7名牺牲党员干部名单公布', '南京新冠肺炎感染者增至53例', '洛阳第一时间修复龙门石窟', '许海峰说中国队YYDS', '杨倩为祖国送上了最好的礼物', '北京极端通勤人口比重最高', '救灾英雄买饼付钱大姐霸气拒收', '背奶妈妈有多难', '东京奥运会首次出现完赛选手确诊新冠', '中国女足丢球', '天龙山佛首回归山西故土', '萧山河道水流湍急漫出河道', '云南一停泊船倾覆3人失联', '熊猫队长奥运加油表情包', '抗洪官兵完成护堤任务夜间无声撤离', '淇县两水库即将大流量泄洪', '医美投诉量5年间增长近14倍', '群众站在洪水中为抗洪官兵当路标', '直升机空投物资驰援新乡', '郑州地铁救人医生被爸爸手拉手接走', '2021中国主要城市通勤报告', 'BBC 造谣', '6岁男孩14天挣108元捐给河南', '庞伟获得10米气手枪铜牌'], [6677204, 5148744, 2177428, 2124133, 2051133, 1855390, 1795134, 1719456, 1507188, 1470746, 1337964, 1317019, 1090828, 1069861, 998924, 974399, 963423, 949322, 945517, 934910, 923993, 923190, 914640, 881314, 870413, 864819, 784078, 739133, 738295, 734824, 733925, 731229, 729227, 726197, 723934, 722858, 719218, 718704, 715441, 714119, 712110, 709242, 706367, 703756, 703016, 700199, 697297, 696893, 696082, 696079])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值