首页 > 其他分享 >(实例)学习requests方法的写法

(实例)学习requests方法的写法

时间:2023-01-05 14:05:01浏览次数:49  
标签:name get url self headers 实例 requests 写法

​第一种:直接平铺代码

# -*- coding:utf-8 -*-
# pip install requests,这是导入requests模块的命令
# 因为requests是外部的,所以每次使用都要import一次
import requests

# 添加headers请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
}
# 构建前三页的url
for num in range(1, 4):
    url = "https://www.zongheng.com/rank/details.html?rt=7&d=1&p={}".format(num)

    # 发送get请求,带入参数(url和headers请求头),然后.text,获取文本数据,若是图片声音等要用content了
    resp = requests.get(url, headers=headers).text
    # 定义文件名,根据for循环变化取名
    file_name = "小说分类第{}页.html".format(num)
    # 保存文件路径并写入
    with open("./novel/" + file_name, "a", encoding="utf-8") as f:
        f.write(resp)
        print(file_name, "保存完毕")

第二种方法:面向对象的类和函数方法

# -*- coding:utf-8 -*-
# pip install requests,这是导入requests模块的命令
# 因为requests是外部的,所以每次使用都要import一次
import requests
import os

# 定义一个类
class Novel_Data(object):
    def __init__(self):
        # 定义类属性:url地址,请求头headers,创建存放小说的路径
        self.url = "https://www.zongheng.com/rank/details.html?rt=7&d=1&p={}"
        self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"}
        self.name = "小说"
        if not os.path.exists(self.name):
            os.mkdir(self.name)

    # 构建get_url_page函数
    # 收集前三页的url,先定义一个列表url_list,再用for循环把生成的url,一个个放入列表,调用的时候返回
    def get_url_page(self):
        url_list = []
        for num in range(1,4):
            url_list.append(self.url.format(num))
        return url_list

    # 构建get_data_index函数,发送get请求,并获取网页的文本数据
    def get_data_index(self,url):
        resp = requests.get(url, headers=self.headers).text
        return resp

    # 构建write_data函数,保存数据
    def write_data(self,resp,num):
        # 定义保存小说目录的文档文件名
        file_name = "小说分类第{}页.html".format(num)
        # 用withopen方法写入
        with open("./小说/" + file_name, "a", encoding="utf-8") as f:
            f.write(resp)
            print(file_name, "保存完毕")

    # 运行以上方法,分别得到两个参数(url的文本内容和页数number)并带入write_data函数
    def run(self):
        url_list = self.get_url_page()
        for url in url_list:
            resp = self.get_data_index(url)
            number = url_list.index(url)+1
            self.write_data(resp,number)


if __name__ == '__main__':
    spider = Novel_Data()
    spider.run()

标签:name,get,url,self,headers,实例,requests,写法
From: https://blog.51cto.com/u_15930659/5991016

相关文章