第一种:直接平铺代码
# -*- 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