翼度科技»论坛 编程开发 python 查看内容

【爬虫实战】用python爬今日头条热榜TOP50榜单!

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
目录

一、爬取目标

您好!我是@马哥python说,一名10年程序猿。
今天分享一期爬虫案例,爬取的目标是:今日头条热榜的榜单数据。
打开今日头条 首页,在页面右侧会看到头条热榜,如下:

爬取以上6个关键字段,含:
热榜排名,热榜标题,热度值,热榜标签,热榜分类,热榜链接。
开发者模式分析:

二、爬取结果

爬取结果截图:

三、代码讲解

首先,导入需要用到的库:
  1. import requests
  2. import pandas as pd
  3. import re
复制代码
定义一个请求头:(爬取目标较简单,一个User-agent即可)
  1. # 请求头
  2. h1 = {
  3.         'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.4 Safari/605.1.15',
  4. }
复制代码
定义请求地址:
  1. url = 'https://www.toutiao.com/hot-event/hot-board/?origin=toutiao_pc'
复制代码
用requests发送请求:
  1. # 发送请求
  2. response = requests.get(url, headers=h1)
复制代码
查看响应码并以json方式接收返回数据:
  1. # 查看响应码
  2. print(r.status_code)
  3. # 接收返回数据
  4. json_data = r.json()
复制代码
定义一些空列表,用于存放数据:
  1. title_list = []  # 热榜标题
  2. value_list = []  # 热度值
  3. url_list = []  # 热榜链接
  4. category_list = []  # 热榜分类
  5. label_list = []  # 热榜标签
复制代码
以"热榜标题"字段为例:
  1. for data in json_data['data']:
  2.         # 热榜标题
  3.         title = data['Title']
  4.         print('热榜标题:', title)
  5.         title_list.append(title)
复制代码
其中,热榜链接比较特殊,接口中返回的url很长,形如:

可以看到,url中从?往后,都是不必要的请求参数。
所以,用正则表达式把?后面的全部删掉,提取出id,再进行拼接url,如下:
[code]# 正则表达式提取出链接idurl3 = re.search(r"(?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具