当前位置:   article > 正文

python刷今日头条阅读量_人工智能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")

项目结果

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/958673
推荐阅读
相关标签
  

闽ICP备14008679号