课程链接

讲师的公众号文章:今日头条数据抓取及持久化(完整代码版,含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. 学习笔记Flink(二)—— Flink数据流模型、时间窗口和核心概念
  2. javascript立体学习指南
  3. Android 编译系统分析(三)
  4. 网络基础:计算机网络由基础到深入常用知识集锦!
  5. Android(组件大全)
  6. 阿里云峰会|数据库也能自动驾驶?DAS全天候给你保驾护航!
  7. Rabbitmq消息中间件整合Springboot
  8. 三角函数公式总结(四)
  9. 孤荷凌寒自学python第六十三天学习mongoDB的基本操作并进行简单封装2
  10. pytorch从ubuntu16.04到win7的迁移(解决)
  11. java ad 证书_你好,请教一个java与AD域SSL(636端口)通讯问题
  12. 如果使用Node.js不存在该如何创建目录?
  13. rails 3环境搭建
  14. VS C++ 字符串分割 strtok
  15. 学生管理系统IPO图_图书管理系统开发背景和意义
  16. base64原理解析
  17. php 正则 tr,js正则匹配table tr
  18. Python Flask学习_使用flask-login实现认证蓝本(一)
  19. 安卓签名文件与MD5 SHA1 SHA256
  20. js实现任意节日倒计时html

热门文章

  1. 03 线型动态规划——LIS模型
  2. SciTe 无法输入中文解决方法(图文版)
  3. 【每日早报】2019/06/25
  4. 如何下载安装和使用 Office 2016的中文语言包?
  5. hgame2023 week2 writeup
  6. 使用PyInstaller遇到的坑坑洼洼
  7. TCP在FIN_WAIT1状态到底能持续多久以及TCP假连接问题
  8. 二级域名 文件服务器,自建DNS服务器使用二级域名转发内网服务器
  9. python pandas库详解_Pandas 库的详解和使用补充
  10. 深度学习(目标跟踪和目标检测)--边界框bbox坐标转换(任意格式【list,numpy,tensor】、任意维度【向量、一维矩阵、二维矩阵】)