(实例)学习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()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朝兮暮兮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值