Python爬取百度热榜前十条数据

具体代码如下:

import re
import requests
import json


def get_html(url):  # 获取网页源代码
    try:
        response = requests.get(url)
        response.encoding = response.apparent_encoding
        if response.status_code == 200:
            html = response.text
            return html
        else:
            print("连接异常!")
    except:
        print("获取失败!")


def get_result(html):  # 答案
    # print(html)
    pattern1 = re.compile(r'<td class="first">.*?>(\d+)</span>', re.S)  # 获取排名
    rank = re.findall(pattern1, html)
    # print(rank)
    pattern2 = re.compile(r'<td class="keyword">.*?>(.*?)</a>', re.S)  # 获取keyword
    keyword = re.findall(pattern2, html)
    # print(keyword)
    pattern3 = re.compile(r'<td class="last">.*?>(\d+)</span>', re.S)  # 获取流行指数
    last = re.findall(pattern3, html)
    # print(last)
    pattern4 = re.compile(r'<td class="keyword">.*?<a href="(.*?)"', re.S)  # 获取链接
    link = re.findall(pattern4, html)
    # print(link)
    result = {}
    for i in range(10):
        dict1 = {
            "关键字": keyword[i],
            "流行指数": last[i],
            "链接": link[i].replace('./detail?b=1&c=513&w',
                                  'https://www.baidu.com/baidu?cl=3&tn=SE_baiduhomet8_jmjb7mjw&rsv_dl=fyb_top&fr=top1000&wd')
        }
        # print(dict1)
        result[rank[i]] = dict1  # 将排行作为外层键,dict1作为结果的值,构成一个大的字典便于查询
    return result


def main():
    url = 'http://top.baidu.com/buzz?b=1&fr=topindex'
    html = get_html(url)
    result1 = get_result(html)
    result = json.dumps(result1, indent=4, ensure_ascii=False)  # 转json格式
    print(result)


if __name__ == '__main__':
    main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余生羁绊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值