课程链接

讲师的公众号文章:今日头条数据抓取及持久化(完整代码版,含IP和用户代理)​mp.weixin.qq.com

课程代码

抓取并持久化user-agent工具utils.py

对于爬虫工具,需要设置发起请求的user-agent,import fake-useragent可以实现,但是每次更换user-agent都要发起网络请求,并不是好办法,所以比较好的做法是:抓取文件,本地json存储备用。

怎么找到fake-useragent到哪里取数的,截图如下:

utils.py代码如下:

"""

这个工具的目的是把fake_useragent的user_agent下载下来,存储文件使用

from fake_useragent import UserAgent

https://fake-useragent.herokuapp.com/browsers/0.1.11

"""

import requests

import json

import random

"""

json的方法中 dump,dumps,load,loads的区别

dump/load,是操作文件的

dumps/loads,是处理json和字符串直接相互转换的

作业:拿到标签并存储起来

"""

browser_info_file = "browser_info.json"

user_agent_url = "https://fake-useragent.herokuapp.com/browsers/0.1.11"

def write_browser_info_to_file():

my_user_agent = requests.get(user_agent_url)

with open(browser_info_file, "w") as f:

# 写进去就是JSON,方便用json.load读取

json.dump(my_user_agent.text, f)

# f.write 的写入方式,是个字符串,json.load就会有问题

# f.write(my_user_agent.text)

def get_random_browser():

file = open(browser_info_file, 'r')

#

agent_json = json.load(file)

#

agent_json = json.loads(agent_json)

browsers = agent_json["browsers"]

# 随机出来一个浏览器类型

i = random.randint(0, len(browsers) - 1)

if i == 0:

browser_name = "chrome"

elif i == 1:

browser_name = "opera"

elif i == 2:

browser_name = "internetexplorer"

else:

browser_name = "safari"

final_browser = browsers[browser_name][random.randint(0, len(browsers[browser_name]))]

return final_browser

if __name__ == '__main__':

write_browser_info_to_file()

print(get_random_browser())

抓取热门文章tags并存储-toutiao_spider.py

import requests

import time

import json

import pandas as pd

import re

from part1.utils import get_random_browser

# 定义Http请求的headers/proxies

def get_request_url_and_headers():

user_agent = get_random_browser()

current_time = int(time.time())

# 我要到哪里去

# 头条的这个,去掉:_signature,否则抓不到数

request_url = "https://www.toutiao.com/api/pc/feed/?max_behot_time=" \

+ str(current_time) \

+ "&category=news_hot&utm_source=toutiao&widen=1&tadrequire=true&as=A1751D55DE389D7&cp" \

"=5D5E38E9CDA7BE1"

# 我怎么来,我骑着自行车来

headers = {

"user-agent": user_agent

}

# 我从哪里来,我从东土大唐而来

# 搜索引擎搜"免费IP地址"能找到可用的代理

proxies = {

"url": "http://114.235.23.172:9000"

}

return request_url, headers, proxies

# 发起Http请求,抓取网页内容,如果发生错误,重试一次

def get_response_json():

request_url, headers, proxies = get_request_url_and_headers()

response = requests.get(request_url, headers=headers, proxies=proxies)

# print(response.text.encode("utf-8").decode("unicode_escape"))

response_json = json.loads(response.text)

if response_json["message"] == "error":

response_json = get_response_json()

return response_json

# 抓取头条热点新闻数据,存入json备用

def data_to_file():

data = get_response_json()["data"]

for i in range(len(data)):

data_dict = data[i]

with open("toutiao.json", "a+") as f:

json.dump(data_dict, f, ensure_ascii=False)

f.write("\n")

df = pd.read_json("toutiao.json", lines=True)

df.to_excel("toutiao.xlsx")

# 抓取热门文章的标签,并存储备用

def get_news_tag():

df = pd.read_json("toutiao.json", lines=True)

tags_pure = []

request_url, headers, proxies = get_request_url_and_headers()

for i in range(len(df)):

news_url = "https://www.toutiao.com" + df["source_url"][i]

# print(news_url)

response = requests.get(news_url, headers=headers, proxies=proxies)

reg = r'"name":".*?"}'

tags = re.findall(reg, response.text)

tags_pure_row = []

if len(tags) <= 0:

tags_pure.append([])

continue

for j in range(len(tags)):

tags_pure_row.append(tags[j].replace('"name":"', '').replace('"}', ''))

tags_pure.append(tags_pure_row)

df["tags"] = tags_pure

df.to_excel("toutiao_with_tags.xlsx")

if __name__ == '__main__':

# print(get_request_url_and_headers())

# print(get_response_html())

# data_to_file()

get_news_tag()

实现展示

python爬取今日头条后台数据_爬虫爬取今日头条数据代码实现相关推荐

  1. python爬取分页数据_爬虫抓取分页数据的简单实现

    昨天,我们已经利用Jsoup技术实现了一个简单的爬虫,原理很简单,主要是要先分析页面,拿到条件,然后就去匹配url,采用dome解析的方式循环抓取我们需要的数据,从而即可轻松实现一个简单的爬虫.那么, ...

  2. java爬取网易云歌单_爬虫爬取网易云歌单

    一.主题式网络爬虫设计方案 1.主题式网络爬虫名称:爬取网易云音乐歌单 2.主题式网络爬虫爬取的内容与数据特征分析 爬取网易云音乐歌单前十页歌单,轻音乐类型的歌单名称.歌单播放量.歌单链接.用户名称. ...

  3. python爬取微信小程序源代码_爬虫爬取微信小程序

    之前打算做个微信小程序的社区,所以写了爬虫去爬取微信小程序,后面发现做微信小程序没有前途,就把原来的项目废弃了做了现在的网站观点,不过代码放着也是放着,还不如公开让大家用,所以我把代码贴出来,有需要的 ...

  4. 【Python】大数据挖掘课程作业1——使用爬虫爬取B站评论、弹幕与UP主的投稿视频列表

    [Python]大数据挖掘课程作业1--使用爬虫爬取B站评论.弹幕与UP主的投稿视频列表 数据挖掘部分的基本目标是:对于指定的UP主,能够获取其投稿视频列表:对于指定的视频,能够获取其视频标签.评论( ...

  5. Java_Hive自定义函数_UDF函数清洗数据_清洗出全国的省份数据

    Java_Hive_UDF函数清洗数据_清洗出全国的省份数据 最近用Hadoop搞数据清洗,需要根据原始的地区数据清洗出对应的省份数据,当然我这里主要清洗的是内陆地区的数据,原始数据中不包含港澳台地区 ...

  6. python爬取去哪网数据_用户观点:企查查数据爬取技术与Python 爬取企查查数据...

    主体数据来源是全国工商信用网但是每个省的工商系统都不同,要针对每个省的工商系统单独写爬虫每个省的验证码也不同,也要单独做.企查查的原理不是主动爬去数据,而是有人查询该企业时,如果自己的数据库没有该企业 ...

  7. python爬空气污染实时数据_一键爬取空气质量相关指数

    刚刚入门python,想上手一些比较简单的爬虫项目.今天我们来爬一爬一个空气质量指数的网站来获取全国城市的空气质量指数.记得跟着我的思路来哟! 前期准备工作 首先一个舒服的pythonIDLE肯定是必 ...

  8. python爬取股票大单历史记录_定向爬取股票数据——记录一次爬虫实战

    今天是八月2号,自学python爬虫已经一整个月了.不学不理解,真正学了才发现,python不愧是一门博大精深的高级编程语言,我学到现在也才只见识到它冰山一脚,python应用的范围即便相比于c.c+ ...

  9. python爬取网站大数据_基于腾讯位置大数据平台的全球移动定位数据获取(Python爬取)...

    对于腾讯位置大数据平台,有一些商业接口可以调用 看起来还是挺爽的,但是现阶段只接受商业合作客户来调用,我们个人是获取不到的. 那就没办法了吗?当然不是,实际上腾讯位置大数据把调用接口就直接写在了前端, ...

最新文章

  1. 创建程序集时元数据失败 -- 拒绝访问_kubectl 创建 Pod 背后到底发生了什么?
  2. c++队列指针 结构体指针
  3. ospaf-开源项目成熟度分析工具
  4. 【WPF】监听WPF的WebBrowser控件弹出新窗口的事件
  5. Adobe 中国区 "Adobe RIA 开发工程师认证考试" 正式发布
  6. 定向输出命令_网络工程师之linux重定向命令和管道命令详解
  7. 【转】使用Apache Kylin搭建企业级开源大数据分析平台
  8. codeforces 808d
  9. python装饰器_Python基础-装饰器
  10. 一副眼镜一千多贵吗_成都配眼镜去哪里好一点?怎样配眼镜才不被坑
  11. python下载文件并改名_Python遍历文件夹并批量改名
  12. springmvc5源码
  13. asp.net core 系列 3 依赖注入服务
  14. SQL课设之报刊订阅管理
  15. ARM嵌入式体系结构与接口技术
  16. 用ZBrush做游戏建模,3D打印,手办模型、珠宝设计等
  17. 关于720vr 全景平台 全景图片制作系统 仿720云需要注意的坑 诚意贴
  18. 女程序媛的神奇修仙路
  19. 浅析3种电池容量监测方案
  20. 构型空间(Configuration Space)(下)

热门文章

  1. 计算机学院年会,全国高等院校计算机基础教育研究会2019学术年会在我校成功举办...
  2. 未来侠机器人教育:不能脱离教育的本质去谈机器人教育培训
  3. 有一头母牛,它每年年初要生一头小母牛;每头小母牛从第四个年头起,每年年初也要生一头小母牛。按此规律,若无牛死亡,第20个年头上共有多少头母牛
  4. .Net Core 文件的上传下载
  5. 链表综合案例(超市购物车)
  6. 第 1 天|基于 AI 进行游戏开发:5 天创建一个农场游戏!
  7. Mybatis相关:pagehelper--超爽的分页插件
  8. CF533A——题解
  9. Google Maps 图标
  10. 卫瓴科技X腾讯企业微信“营销赋能、协同增长”闭门沙龙顺利举行 |深圳