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

第一种:利用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. 前端js校验小数点

    let result = (value.toString()).indexOf("."); if (result != -1 && value.toString() ...

  2. shell_Day09

    awk [单独的编程语言解释器] awk介绍 全称:Aho Weinberger Kernaighan 三个人的首字母缩写: 1970年第一次出现在Unix机器上,后来在开源领域使用它: 所以,我们在 ...

  3. 使用std::string的结构不能使用memset

    使用了std::string作为成员变量的结构体,千万不能使用memset进行初始化,否则程序会爆

  4. SQL语句大全,你不会写的SQL可能都在这里

    1.创建数据库 CREATE DATABASE database-name 2.删除数据库 drop database dbname3.说明:备份sql server 创建 备份数据的 device ...

  5. PHY6230 高性价比低功耗高性能 集成32-bit MCU BLE5.2+2.4G芯片

    PHY6230 是一款高性价比低功耗高性能Bluetooth LE 5.2系统级芯片,集成32-bit高性能低功耗MCU,16KB OTP,8KB Retention SRAM和64KB ROM,可选 ...

  6. php对接飞书机器人报警接口

    <?php function request_by_curl($remote_server, $post_string) { $ch = curl_init(); curl_setopt($ch ...

  7. ansible笔记第二章(ansible-varable变量)

    (1)变量类型 1.1在playbook文件中的play使用变量 [root@m01 project1]# cat vars_1.yml - hosts: oldboy vars:   - web_p ...

  8. Linux系统时间的设定以及自带的timesync时间同步

    1.三个阶段的系统时间设定 1.1 内核启动阶段 这里是在menuconfig文件配置RTC设定系统时间选项.      CONFIG_RTC_HCTOSYS_DEVICE="rtc1&qu ...

  9. thinkphp6+composer+无集成工具 配置php项目环境

    安装composer 下载地址:https://getcomposer.org/Composer-Setup.exe 安装步骤 点击finish完成即可. 打开cmd输入composer查看是否安装成 ...

  10. node_modules修改?

    1.直接改node_modules的内容..... 但是下次npm i之后那个包的代码又恢复原状 2.独立维护需要改的包 把需要改的包复制下来,修改,推送到npm上. 项目里用新包即可,但是增加了维护 ...