"""
本案例不涉及数据提取,
仅指导 网页分页爬取的两种方式 思路

第一种:利用while Ture,传参,然后在设定一个判断条件,案例中用的是如果找不到下一页,循环退出(可用于异步刷新网站)
第二种:利用while Ture不断循环, 获取下一页url,获取不到,循环退出。 优化了异常处理。当输入的贴吧名称有误时,程序重新运行
"""
import requests
from fake_useragent import FakeUserAgent
import time
import random
import re

# 第一种,定义一个url
def f1():
num = 1
kw=input("请输入贴吧名称>>")
pn=0
# 获取网页
# 定义一个url
# 不断运行代码
while True:
base_url ="http://tieba.baidu.com/f?kw={}&ie=utf-8&pn={}"
userAgent = FakeUserAgent().random
headers = {"User-Agent":userAgent}
htmlStr = requests.get(url=base_url.format(kw,pn),headers=headers).text

"""
对网页进行处理,不影响提取内容,
只影响页面显示,在这里主要是想把replace
这个函数练习一下(替换内容,用来处理字符串)
支持链式规则
"""
htmlStr=htmlStr.replace('-->','').replace('-->','')
# print(htmlStr)
# 进行保存
with open(r'./baidutieba/百度贴吧第%s页.html'%num,'w',encoding='utf-8') as f:
f.write(htmlStr)
print('主人,运行状态良好,正在保存第%s页'%num)
if htmlStr.find('class="next pagination-item " >') == -1:
break

# 设置延迟时间
time.sleep(1.5)

#运行一次,url的参数改变一次
num+=1
pn+=50

# 第二种
def f2():
num = 1
kw = input(">>请输入贴吧名称:")
# 定义一个初始url
url = 'http://tieba.baidu.com/f?kw={}&ie=utf-8&pn=0'.format(kw)
# 随机user-agent
while True:
userAgent = FakeUserAgent().random
headers = {"User-Agent": userAgent}
# 获取到html网页(字符串)
htmlStr = requests.get(url, headers=headers).text

# 保存
with open(r'./baidutieba/百度贴吧第%s页.html' % num, 'w', encoding='utf-8') as f:
f.write(htmlStr)
print("正在保存第%s页"%num)
try:
# 获取到下一页的url
result = re.findall(r'<a href="(.*?)" class="next pagination-item " >', htmlStr)
print(result[0])
print(type(result[0]))
if result:
url = 'http:'+ result[0]
else:
break
# 设置延时时间
time.sleep(1.5)
num += 1
except Exception as e:
print(e,"输入贴吧名称有误")
f2()

if __name__ == '__main__':
# f1()
f2()

spider_object_01使用正则爬取百度贴吧所有内容保存成html的更多相关文章

  1. requests+xpath+map爬取百度贴吧

    # requests+xpath+map爬取百度贴吧 # 目标内容:跟帖用户名,跟帖内容,跟帖时间 # 分解: # requests获取网页 # xpath提取内容 # map实现多线程爬虫 impo ...

  2. Python爬虫爬取百度贴吧的帖子

    同样是参考网上教程,编写爬取贴吧帖子的内容,同时把爬取的帖子保存到本地文档: #!/usr/bin/python#_*_coding:utf-8_*_import urllibimport urlli ...

  3. 利用python的爬虫技术爬取百度贴吧的帖子

    在爬取糗事百科的段子后,我又在知乎上找了一个爬取百度贴吧帖子的实例,为了巩固提升已掌握的爬虫知识,于是我打算自己也做一个. 实现目标:1,爬取楼主所发的帖子 2,显示所爬去的楼层以及帖子题目 3,将爬 ...

  4. Python3实现QQ机器人自动爬取百度文库的搜索结果并发送给好友(主要是爬虫)

    一.效果如下: 二.运行环境: win10系统:python3:PyCharm 三.QQ机器人用的是qqbot模块 用pip安装命令是: pip install qqbot (前提需要有request ...

  5. 第三百三十四节,web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息

    第三百三十四节,web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息 crapy爬取百度新闻,爬取Ajax动态生成的信息,抓取百度新闻首页的新闻rul地址 有多 ...

  6. 十三 web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息

    crapy爬取百度新闻,爬取Ajax动态生成的信息,抓取百度新闻首页的新闻rul地址 有多网站,当你浏览器访问时看到的信息,在html源文件里却找不到,由得信息还是滚动条滚动到对应的位置后才显示信息, ...

  7. Python爬虫实战二之爬取百度贴吧帖子

    大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不 ...

  8. 百度图片爬虫-python版-如何爬取百度图片?

    上一篇我写了如何爬取百度网盘的爬虫,在这里还是重温一下,把链接附上: http://www.cnblogs.com/huangxie/p/5473273.html 这一篇我想写写如何爬取百度图片的爬虫 ...

  9. Python开发简单爬虫(二)---爬取百度百科页面数据

    一.开发爬虫的步骤 1.确定目标抓取策略: 打开目标页面,通过右键审查元素确定网页的url格式.数据格式.和网页编码形式. ①先看url的格式, F12观察一下链接的形式;② 再看目标文本信息的标签格 ...

  10. requests+正则爬取豆瓣图书

    #requests+正则爬取豆瓣图书 import requests import re def get_html(url): headers = {'User-Agent':'Mozilla/5.0 ...

随机推荐

  1. StunServer

    Stun 服务器 npm下载stun包 npm i stun -s google stun服务器 google的stun的服务器一般国内访问较慢,所以一般自己搭建一个服务器 const stun = ...

  2. 用tkinter编写一个获取图片资源的GUI工具

    目录 效果展示 导入tkinter库 窗口属性 按钮和输入框 文本输入框Text 运行 打包成exe文件 源码地址 本文可以学习到以下内容: 使用tkinter的Entry功能获取本地文件夹 使用tk ...

  3. 复杂SQL语句及其优化

    一,复杂SQL语句类型 1 ,笛卡尔连接 题目1:找出工资超过各自经理的员工姓名 表:employee(id , name , depid , salary, manager_id ) SELECT ...

  4. flask框架的使用

    在学习了DJango后,又学习FLASK框架,刚入手的感觉就是好简单啊,简单的7行代码,就能搭建一个简单的WEB服务器. from flask import Flask app = Flask(__n ...

  5. 002 jmeter入门级写脚本及参数化

    1.jmeter入门脚本 步骤分析:测试计划(项目名称)-线程组(业务流程)-http请求(接口名称)-察看结果树 编写脚本四要素:测试计划.至少有一个线程组.至少有一个取样器.必须要有监听器 测试计 ...

  6. 转载-Shell脚本中字符串截取功能

    在Shell脚本编写中,有几个地方都是要用到字符串截取的功能,那将这块的内容进行下记录: 1.字符串变量的截取操作 对字符串变量的截取操作一般都是通过${操作符}的方式进行 1)从指定位置index截 ...

  7. plsql美化文件配置

    --generalFUNCTION MGRNAME(P_EMPNO IN EMP.EMPNO%TYPE) RETURN EMP.ENAME%TYPE IS RESULT EMP.ENAME%TYPE; ...

  8. 【记录】 iSCSI服务器的搭建与使用[Debian]

    序言 更换系统后需要一个网络文件存储用于备份文件,本想用NFS多方便,但是timeshift不支持网络存储,备份路径必须是一个块存储设备, 但是你还必须分好文件系统,这不是多此一举???反正我只用rs ...

  9. 3-MIRO发票校验设置默认税码-OMR2

  10. 《Rust权威指南》学习笔记——8.通用集合类型

    Rust通用集合类型 动态数组Vec 字符串String 和&str 哈希映射HashMap