import requests

class TiebaSpider:
"""百度贴吧爬虫类""" def __init__(self, tieba_name) -> None:
self.tieba_name = tieba_name
self.url_temp = "https://tieba.baidu.com/f?kw="+tieba_name+"ie=utf-8&pn={}"
# 请求头部
self.headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36"} def get_url_list(self) -> list:
"""构造一个url列表,将所有url_temp添加到列表中,并返回列表"""
url_list = []
for i in range(10):
url_list.append(self.url_temp.format(i*50))
return url_list
# return [self.url_temp.format(i*50) for i in range(10)] def parse_url(self, url) -> str:
"""
发送请求获取响应 url:get_url_list方法中返回列表中的url元素
"""
print(url) # 打印爬取的当前url
# 发送请求
response = requests.get(url, headers=self.headers)
# 返回解码后的字符串
return response.content.decode() def seve_html(self, html_str, page_num):
"""保存html字符串"""
# 保存文件名
file_path = "{}吧_第{}页.html".format(self.tieba_name, page_num)
with open(file_path, "w", encoding="utf-8") as f:
f.write(html_str) def run(self):
"""主逻辑方法"""
# 1.将get_url_list方法返回的列表重新赋值给url_list
url_list = self.get_url_list()
# 2.遍历,发送请求,获取响应
for url in url_list:
# 将parse_url返回的字符串赋值给html_str变量
html_str = self.parse_url(url)
# 3.保存
# 将列表的索引赋值给page_num
page_num = url_list.index(url) + 1 # 页码
# 调用seve_html方法,储存html_str
self.seve_html(html_str, page_num) if __name__ == "__main__":
t = TiebaSpider("李毅")

思维导图

python实现百度贴吧页面爬取的更多相关文章

  1. python爬爬爬之单网页html页面爬取

    python爬爬爬之单网页html页面爬取 作者:vpoet mail:vpoet_sir@163.com 注:随意copy 不用告诉我 #coding:utf-8 import urllib2 Re ...

  2. Python Requests库入门——应用实例-京东商品页面爬取+模拟浏览器爬取信息

    京东商品页面爬取 选择了一款荣耀手机的页面(给华为打广告了,荣耀play真心不错) import requests url = "https://item.jd.com/7479912.ht ...

  3. python3编写网络爬虫14-动态渲染页面爬取

    一.动态渲染页面爬取 上节课我们了解了Ajax分析和抓取方式,这其实也是JavaScript动态渲染页面的一种情形,通过直接分析Ajax,借助requests和urllib实现数据爬取 但是javaS ...

  4. 使用requests简单的页面爬取

    首先安装requests库和准备User Agent 安装requests直接使用pip安装即可 pip install requests 准备User Agent,直接在百度搜索"UA查询 ...

  5. 【BOOK】动态渲染页面爬取--Selenium库

    动态渲染页面爬取 JavaScript动态渲染 其中一种方式是Ajax请求,通过直接分析Ajax再用requests来实现数据爬取 另外一种方式是模拟浏览器运行 一. Selenium库 Seleni ...

  6. 爬虫系列5:scrapy动态页面爬取的另一种思路

    前面有篇文章给出了爬取动态页面的一种思路,即应用Selenium+Firefox(参考<scrapy动态页面爬取>).但是selenium需要运行本地浏览器,比较耗时,不太适合大规模网页抓 ...

  7. 爬虫系列4:scrapy技术进阶之多页面爬取

    多页面爬取有两种形式. 1)从某一个或者多个主页中获取多个子页面的url列表,parse()函数依次爬取列表中的各个子页面. 2)从递归爬取,这个相对简单.在scrapy中只要定义好初始页面以及爬虫规 ...

  8. Python爬虫学习三------requests+BeautifulSoup爬取简单网页

    第一次第一次用MarkDown来写博客,先试试效果吧! 昨天2018俄罗斯世界杯拉开了大幕,作为一个伪球迷,当然也得为世界杯做出一点贡献啦. 于是今天就编写了一个爬虫程序将腾讯新闻下世界杯专题的相关新 ...

  9. 【图文详解】scrapy爬虫与动态页面——爬取拉勾网职位信息(2)

    上次挖了一个坑,今天终于填上了,还记得之前我们做的拉勾爬虫吗?那时我们实现了一页的爬取,今天让我们再接再厉,实现多页爬取,顺便实现职位和公司的关键词搜索功能. 之前的内容就不再介绍了,不熟悉的请一定要 ...

  10. scrapy之盗墓笔记三级页面爬取

    #今日目标 **scrapy之盗墓笔记三级页面爬取** 今天要爬取的是盗墓笔记小说,由分析该小说的主要内容在三级页面里,故需要我们 一一解析 *代码实现* daomu.py ``` import sc ...

随机推荐

  1. java进阶(16)--System常用方法总结

    一.Systen.out静态变量 静态变量,用的最多的是调用print方法   二.System.out.println() println()其实是printStream类的方法   三.Sytem ...

  2. 洛谷 P9683 A Certain Forbidden Index 题解

    题目链接:\(\color{Purple}\texttt{P9683 A Certain Forbidden Index}\). 填坑.提供一个相对好写的做法. 考虑把一堆不交的区间绑在一起问(即先询 ...

  3. C++编译器选择是否自动生成代码的背后逻辑

    C++编译器选择是否自动生成代码的背后逻辑 编译器会为class和struct(实际上两者在C++中是一回事)自动生成构造函数.赋值操作符函数和析构函数.如果不是这样,那么开发者就必须自己写一些枯燥冗 ...

  4. Blazor的技术优点

    Blazor是一种使用.NET和C#构建客户端Web应用程序的新兴技术.它允许开发者在浏览器中直接运行.NET代码,而无需依赖JavaScript.Blazor的技术优点主要表现在以下几个方面: 单一 ...

  5. mvn 编译异常:Fatal error compiling: 无效的标记: -parameters

    错误信息: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin::compile (defaul ...

  6. Verilog仿真实践

    Verilog必须掌握 逻辑仿真工具(VCS)和逻辑综合工具(DC) AndOR module AndOr( output X,Y, input A,B,C ); // A B进行按位与运算 assi ...

  7. 【SHELL】[ ]、[[ ]]条件判断结构

    输入参数包含 'arg-m' 时,会输出 Hit Arg-M 和 Hit Arg-N [[ ${EXEC_PARAMS[@]} =~ 'arg-m' ]] && echo " ...

  8. 《OnJava》——11内部类

    内部类 利用内部类,可以将逻辑上存在关联的类组织在一起,而且可以控制一个类在另一个类中的可见性. 内部类和组合不同,内部类是一种代码隐藏机制:将代码放在其他类的内部. 11.1 创建内部类 创建内部类 ...

  9. [转帖]clickhouse安装部署以及版本选取

    https://www.cnblogs.com/MrYang-11-GetKnow/p/15818768.html 1. 系统要求 ClickHouse 可以在任何具有 x86_64.AArch64 ...

  10. [转帖]JMeter设置Http代理对web或者app进行录制

    https://www.cnblogs.com/jingdenghuakai/p/11125846.html 一.录制web 1.首先保证JMeter的安装环境都正确.启动JMeter:在安装路径的b ...