爬取今日头条

python爬取今日头条

	学习爬虫有一段时间了,今天做个实战小项目,爬取今日头条的热点。很多人都喜欢刷头条,
	本次将会爬取热点页面,每隔30秒抓取一次,并以追加的方式保存入文件中

难度:简单

工具:

  1. python:3.7(anaconda)
  2. 编辑器:pycharm2019.1
  3. 使用的模块:requests、json、time

关于pycharm的激活,有需要的朋友可以参考我的博客:pycharm/idea激活

思路:

  1. 首先要有一个账号,可以用QQ登录,然后进入头条官网,找到"热点"栏目。
  2. 获取到对应热点栏目的url、cookie、user-anent
  3. 代码实现目标内容的抓取

上手:

  1. 登录进入到目标页面之后,取得需要的信息。
    在这里插入图片描述
  2. 很容易想到,头条的热点栏目可以只刷新一部分内容,所以应该是用ajax实现的
    所以真正的内容在HTML代码中获取不到。打开network->XHR,可以看到,热点信息就在里面在这里插入图片描述
  3. 代码实现
# 时间:2019-4-8
# 内容:爬取今日头条的热点栏目

import requests
import json
import time


_url = "https://www.toutiao.com/api/pc/feed/?category=news_hot&utm_source=toutiao&widen=1&max_behot_time=1554765316&max_behot_time_tmp=1554765316&tadrequire=true&as=A1250C3AEBADDD2&cp=5CABCDED7D427E1&_signature=Fz.gqgAAS5i9EKAq5BB9EBc.4L"
_headers = {
    'cookie': 'tt_webid=6677522179426485774; WEATHER_CITY=%E5%8C%97%E4%BA%AC; UM_distinctid=169fd3c82d31d-03d38d9bfe605d-77103a49-100200-169fd3c82d41d5; tt_webid=6677522179426485774; csrftoken=29a9338e5f4bc1c2fd7fe29e5caf39c5; sso_uid_tt=d28e7e0d21e1ff621101e7f4d06c25de; toutiao_sso_user=56b1c51186f1dca408808ec2a7153851; login_flag=6413115c5ffc0dc3955803ad1d951ff5; sessionid=cd2c4291a9d47c540ec712e3b298b401; uid_tt=f418766df0e6eb1a6da8f965c6da76a8; sid_tt=cd2c4291a9d47c540ec712e3b298b401; sid_guard="cd2c4291a9d47c540ec712e3b298b401|1554731811|15552000|Sat\054 05-Oct-2019 13:56:51 GMT"; __tasessionId=gvgwyytsx1554767065092; CNZZDATA1259612802=152351107-1554731013-https%253A%252F%252Fwww.baidu.com%252F%7C1554762386',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3642.0 Safari/537.36'

}


# 获取json文件
def get_info(url, headers):
    response = requests.get(url,headers=headers)
    return response


# 将有用的信息保存到文件中
def save(response):
    file = open("toutiao.json", "a", encoding="utf-8")
    # 有用信息包含在response.json()["data"]中
    json.dump(response.json()["data"],file,ensure_ascii=False)


# 主函数,调用获取和保存的函数成果
def run(url, headers):
    for i in range(10):
        response = get_info(url, headers)
        save(response)
        time.sleep(30)
    return


if __name__ == '__main__':
    run(_url,_headers)

成果
这里把多次抓取的信息保存在同一个接送文件中是有问题的
抓取的内容可以去https://www.json.cn/去解析预览

end~~~~~~~~~

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值