python刷今日头条阅读量_人工智能Python编程特训营——爬虫抓取今日头条数据

本篇文章主要记录如何使用Python爬取动态页面的数据并进行存储。其过程主要如下图所示。

接下来分别介绍一下每部分的内容。

准备请求数据:获取请求URL打开浏览器的开发者工具,点击“Network”(红色方框部分)。

当点击页面链接或者滚动鼠标页面加载数据时,会有网址出现(如蓝色方框所示)。

点击其中一个网址,右边会显示该网址对应的接口信息(如橙色方框所示),其中的“Request URL”就是我们所需要的请求URL。

准备请求数据:代理伪装

def write_browsers_into_file():

#从该网址获取伪装的用户代理

user_agent = requests.get("https://fake-useragent.herokuapp.com/browsers/0.1.11")

#存入本地文件中,以便后续直接读取数据

with open("fake_useragent.json", "w") as f:

json.dump(user_agent.text, f)

2.从伪装代理数据文件中随机获取一个代理

def get_random_fake_useragent():

with open("fake_useragent.json", "r") as f:

#从文件中获取数据

fake_useragents = json.load(f)

#将数据转换为json格式

browser_json = json.loads(fake_useragents)

#获取browser的数据

browsers = browser_json["browsers"]

#随机获取一个browser类型

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

browser_name = ""

if browser_type == 0:

browser_name = "chrome"

elif browser_type == 1:

browser_name = "opera"

elif browser_type == 2:

browser_name = "firefox"

elif browser_type == 3:

browser_name = "internetexplorer"

else:

browser_name = "safari"

#根据浏览器的类型获取对应的用户代理

fake_useragent = browsers[browser_name][random.randint(0, len(browsers[browser_name])-1)]

return fake_useragent

准备请求数据:封装请求数据

def get_request_data():

user_agent = get_random_fake_useragent

current_time = int(time.time())

headers = {

"user_agent": user_agent

}

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

"category=news_hot&utm_source=toutiao&widen=1&" \

"max_behot_time=" + str(current_time) + "&" \

"max_behot_time_tmp=" + str(current_time) + "&" \

"tadrequire=true&as=A1654D6622F0D5A&cp=5D62109D25EA0E1&" \

"_signature=23DszgAAhho1NrOF4cPowttw7N"

proxies = {

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

}

return base_url, headers, proxies

发送请求/获取请求数据

def get_response_data():

request_url, headers, proxies = get_request_data()

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

global response_json #设置全局变量,从而保证递归后,返回的结果有数据

response_json = json.loads(response.text)

#如果获取到的是error,则重新获取

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

get_response_data()

return response_json

处理/存储数据

#将数据存入文件

def data_into_file(response_json):

data = response_json["data"]

for i in range(len(data)):

data_dict = data[i]

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

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

f.write("\n")

#存入excel

response_data = get_response_data()

data_into_file(response_data)

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

df.to_excel("toutiao_data.xlsx")

项目结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值