标签:port 变化 实现 amp 世界 __init__ chrome 请求 int
借鉴
# 是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python3解释器;
# !/usr/bin/python3
# -*- coding: utf-8 -*-
"""
请求URL分析 https://tieba.baidu.com/f?kw=魔兽世界&ie=utf-8&pn=50
请求方式分析 GET
请求参数分析 pn每页50发生变化,其他参数固定不变
请求头分析 只需要添加User-Agent
"""
# 代码实现流程
# 1. 实现面向对象构建爬虫对象
# 2. 爬虫流程四步骤
# 2.1 获取url列表
# 2.2 发送请求获取响应
# 2.3 从响应中提取数据
# 2.4 保存数据
import requests
class TieBa_Spier():
def __init__(self, max_page, kw):
# 初始化
self.max_page = max_page # 最大页码
self.kw = kw # 贴吧名称
self.base_url = "https://tieba.baidu.com/f?kw={}&ie=utf-8&pn={}"
self.headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"
}
def get_url_list(self):
"""获取url列表"""
# 根据pn每50进入下一页,构建url列表
return [self.base_url.format(self.kw, pn) for pn in range(0, self.max_page * 50, 50)]
def get_content(self, url):
"""发送请求获取响应内容"""
response = requests.get(
url=url,
headers=self.headers
)
# print(response.text)
return response.content
def save_items(self, content, idx):
"""从响应内容中提取数据"""
with open(‘{}.html‘.format(idx), ‘wb‘) as f:
f.write(content)
return None
def run(self):
"""运行程序"""
# 获取url_list
url_list = self.get_url_list()
for url in url_list:
# 发送请求获取响应
content = self.get_content(url)
# 保存数据,按照url的索引+1命名保存的文件
items = self.save_items(content, url_list.index(url) + 1)
# 测试
# print(items)
if __name__ == ‘__main__‘:
# 最大页码,贴吧名
spider = TieBa_Spier(2, "神无月")
spider.run()
标签:port 变化 实现 amp 世界 __init__ chrome 请求 int
原文地址:https://www.cnblogs.com/shuimohei/p/13323800.html