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 ...
随机推荐
- 数据驱动之 python + requests + Excel
数据驱动 是根据数据来测试的,如读取 excel表中的测试用例自动填写测试结果,发送测试报告 包括以下模块: 1.获取用例 2.调用接口 3.校验结果 4.发送测试报告 5.异常处理 6.日志模块 1 ...
- react项目--路由封装
import React, { lazy } from "react"; import Home from "../views/Home"; import Lo ...
- springboot docker打包镜像
首先在idea中创建springboot项目,pom文件packaging 为jar ,然后编写接口. 编写Dockerfile 注意Dockerfile只能这样命名. 使用maven打包命令或者使用 ...
- Micro-OA系统
Micro-OA简单描述 MicroOA是一款不需要专业的开发知识或开发经验,通过页面交互式即可实现动态搭建表单的微型办公自动化系统.在日常工作当中,我们面临着各种各样的表单,在开发系统时,若我们采用 ...
- gradle的配置
第一次接触公司的JAVA项目,使用了gradle,于是乎到网上搜索一番,终于弄明白了是个什么东东,由于之前也没有接触过maven和ant,所以对这个东西还是很陌生.好了,废话不多说,开始我的环境搭建. ...
- 星链技术设计(starlink techriage design)
1.星链 定义: 星链,是美国太空探索技术公司的一个项目,太空探索技术公司计划在2019年至2024年间在太空搭建由约1.2万颗卫星组成的"星链"网络提供互联网服务,其中158 ...
- IO学习笔记7
2.4 多路复用javaAPI 在上面我们简单java代码实现了多路复用,是一个单线程版的.讲上面的epoll代码复制到linux服务器中,使用strace追踪系统调用. javaAPI会根据系统类型 ...
- return chain.filter(exchange); 这句啥意思
答:继续往后执行过滤器,如果不调用这句代码,请求就不会发给控制器了,如果当前执行的过滤器后面还有过滤器,执行那个过滤器,如果没有,就执行控制器. 那我此时想一个请求取消token校验,得在这里加吗? ...
- Mybatis缓存(3)
10.4.3二级缓存
- Delphi 多进程共享内存的简单封装单元
该单元转自武稀松的博客 稍作修改,使其支持Delphi7 { 共享内存封装. 封装成了MemoryStream的形式. 用法如下: var ms : TShareMemStream; ms := TS ...