spider_object_01使用正则爬取百度贴吧所有内容保存成html
"""
本案例不涉及数据提取,
仅指导 网页分页爬取的两种方式 思路
非
第一种:利用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的更多相关文章
- requests+xpath+map爬取百度贴吧
# requests+xpath+map爬取百度贴吧 # 目标内容:跟帖用户名,跟帖内容,跟帖时间 # 分解: # requests获取网页 # xpath提取内容 # map实现多线程爬虫 impo ...
- Python爬虫爬取百度贴吧的帖子
同样是参考网上教程,编写爬取贴吧帖子的内容,同时把爬取的帖子保存到本地文档: #!/usr/bin/python#_*_coding:utf-8_*_import urllibimport urlli ...
- 利用python的爬虫技术爬取百度贴吧的帖子
在爬取糗事百科的段子后,我又在知乎上找了一个爬取百度贴吧帖子的实例,为了巩固提升已掌握的爬虫知识,于是我打算自己也做一个. 实现目标:1,爬取楼主所发的帖子 2,显示所爬去的楼层以及帖子题目 3,将爬 ...
- Python3实现QQ机器人自动爬取百度文库的搜索结果并发送给好友(主要是爬虫)
一.效果如下: 二.运行环境: win10系统:python3:PyCharm 三.QQ机器人用的是qqbot模块 用pip安装命令是: pip install qqbot (前提需要有request ...
- 第三百三十四节,web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息
第三百三十四节,web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息 crapy爬取百度新闻,爬取Ajax动态生成的信息,抓取百度新闻首页的新闻rul地址 有多 ...
- 十三 web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息
crapy爬取百度新闻,爬取Ajax动态生成的信息,抓取百度新闻首页的新闻rul地址 有多网站,当你浏览器访问时看到的信息,在html源文件里却找不到,由得信息还是滚动条滚动到对应的位置后才显示信息, ...
- Python爬虫实战二之爬取百度贴吧帖子
大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不 ...
- 百度图片爬虫-python版-如何爬取百度图片?
上一篇我写了如何爬取百度网盘的爬虫,在这里还是重温一下,把链接附上: http://www.cnblogs.com/huangxie/p/5473273.html 这一篇我想写写如何爬取百度图片的爬虫 ...
- Python开发简单爬虫(二)---爬取百度百科页面数据
一.开发爬虫的步骤 1.确定目标抓取策略: 打开目标页面,通过右键审查元素确定网页的url格式.数据格式.和网页编码形式. ①先看url的格式, F12观察一下链接的形式;② 再看目标文本信息的标签格 ...
- requests+正则爬取豆瓣图书
#requests+正则爬取豆瓣图书 import requests import re def get_html(url): headers = {'User-Agent':'Mozilla/5.0 ...
随机推荐
- 前端js校验小数点
let result = (value.toString()).indexOf("."); if (result != -1 && value.toString() ...
- shell_Day09
awk [单独的编程语言解释器] awk介绍 全称:Aho Weinberger Kernaighan 三个人的首字母缩写: 1970年第一次出现在Unix机器上,后来在开源领域使用它: 所以,我们在 ...
- 使用std::string的结构不能使用memset
使用了std::string作为成员变量的结构体,千万不能使用memset进行初始化,否则程序会爆
- SQL语句大全,你不会写的SQL可能都在这里
1.创建数据库 CREATE DATABASE database-name 2.删除数据库 drop database dbname3.说明:备份sql server 创建 备份数据的 device ...
- PHY6230 高性价比低功耗高性能 集成32-bit MCU BLE5.2+2.4G芯片
PHY6230 是一款高性价比低功耗高性能Bluetooth LE 5.2系统级芯片,集成32-bit高性能低功耗MCU,16KB OTP,8KB Retention SRAM和64KB ROM,可选 ...
- php对接飞书机器人报警接口
<?php function request_by_curl($remote_server, $post_string) { $ch = curl_init(); curl_setopt($ch ...
- ansible笔记第二章(ansible-varable变量)
(1)变量类型 1.1在playbook文件中的play使用变量 [root@m01 project1]# cat vars_1.yml - hosts: oldboy vars: - web_p ...
- Linux系统时间的设定以及自带的timesync时间同步
1.三个阶段的系统时间设定 1.1 内核启动阶段 这里是在menuconfig文件配置RTC设定系统时间选项. CONFIG_RTC_HCTOSYS_DEVICE="rtc1&qu ...
- thinkphp6+composer+无集成工具 配置php项目环境
安装composer 下载地址:https://getcomposer.org/Composer-Setup.exe 安装步骤 点击finish完成即可. 打开cmd输入composer查看是否安装成 ...
- node_modules修改?
1.直接改node_modules的内容..... 但是下次npm i之后那个包的代码又恢复原状 2.独立维护需要改的包 把需要改的包复制下来,修改,推送到npm上. 项目里用新包即可,但是增加了维护 ...