爬虫学习(五)——百度贴吧的爬取

import os
import time
import urllib.request
import urllib.parse


# 输入目标页码和吧名
def header():
url = "https://tieba.baidu.com/f?"
baming = input("请输入要爬取的吧名")
start_page = int(input("请输入起始页"))
end_page = int(input("请输入结束页"))
# 对目标页码进行爬取
for page in range(start_page,end_page+1):
print("正在爬取第%s页"%page)
request = headle_request(page,url,baming)
download(request,baming,page)
# 设置时间间隔,防止网站识别为恶意攻击
time.sleep(2)


# 构建请求对象,拼接url
def headle_request(page,url,baming):
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"}
pn = (page-1)*50
data = {
"kw": baming,
"ie": "utf8",
"pn": pn
}
data = urllib.parse.urlencode( data )
url += data
request = urllib.request.Request( url, headers=headers )
return request


# 根据请求对象下载指定的目标数据
def download(request,baming,page):
# 获取响应数据
response = urllib.request.urlopen(request)
# 创建文件存储的文件夹
if not os.path.exists(baming):
os.mkdir(baming)
# 拼接文件名
filename =baming+"第%s页"%page+".html"
print(filename)
# 拼接文件路径
filepath = os.path.join(baming,filename)
# 将相应的数据存储起来
with open(filepath,"wb") as tf:
tf.write(response.read())
if __name__ == '__main__':
header()



转载于:https://www.cnblogs.com/kuangkuangduangduang/p/10369636.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449947.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是嵌入式设备?/ 嵌入式设备的定义

什么是嵌入式设备?/ 嵌入式设备的定义 区别于通用计算机的其他设备都可以称之为嵌入式设备 (个人电脑,服务器) 一段时期内,必备的硬件配置。 嵌入式开发包括哪些部分: 底层驱动开发: 关键字…

Linux mv命令、Linux cp命令、Linux scp命令

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 Linux mv命令用来为文件或目录改名、或将文件或目录移入其它位置。 语法 mv [options] source dest mv [options] source... director…

创业者谈:畏惧失败,但也要拥抱失败

摘要:本文作者为Paydirt创始人Tristan Gamilis,他在文中分享了如何面对创业过程中的失败。作为一个创业者,开始的时候并非全才,很多知识都是经历了创业中的失败,摸爬滚打之后才学会的。所以,我们在创业过程…

基于STM32F4移植W5500官方驱动库ioLibrary_Driver(转)

源: 基于STM32F4移植W5500官方驱动库ioLibrary_Driver 参考: 基于STM32W5500 的Ethernet和Internet移植 Upgrade W5500 Throughput on Nucleo STM32F401RE Using SPI DMA

redis 资料

redis是什么: Redis is an open source, BSD licensed, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets. redis是开源,BSD许可,高级的key-value存储系统. 可以用来存储字…

Android应用开发——onStop的调用时机

onStop的调用时机,网上搜索到的说法大概是:“ onStop的调用是“The activity is no longer visible”,也就是完全不可见的时候调用的,这个完全不可见真的就是指视觉上的完全看不到而已,无论是按home键返回桌面&#xf…

UnaryOperator函数式接口

2019独角兽企业重金招聘Python工程师标准>>> 这是一个函数式接口&#xff0c;因此可以用作lambda表达式或方法引用的赋值目标。 可以看到UnaryOperator<T>继承了Function<T,T>接口&#xff0c;这里可是两个T,T,还增加了static修饰的identity()方法。 然…

从程序员到项目经理

推荐研发工程师必看的内容 从程序员到项目经理 从程序员到项目经理”&#xff0c;这个标题让我想起了很久以前一本书的名字《从Javascript到Java》。然而&#xff0c;从Javascript到Java充其量只是工具的更新&#xff0c;而从程序员到项目经理&#xff0c;却是一个脱胎换骨的过…

linux--命令rcp和scp

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 rcp代表“remote file copy”&#xff08;远程文件拷贝&#xff09;。该命令用于在计算机之间拷贝文件。rcp命令有两种格式。第一种格式…

Android Camera 2.0 Api

二次图像处理 Camera2的API扩展了对YUV的支持&#xff0c;及图像再处理支持。要知道是否据有这个能力&#xff0c;可以调getCameraCharacteristics()方法&#xff0c;检查REPROCESS_MAX_CAPTURE_STALL这个键值 。如果设备支持再处理&#xff0c;则可以调用createReprocessableC…

scala-数组操作

package com.bigdataimport scala.collection.mutable.ArrayBufferobject ArrayO {def main(args: Array[String]): Unit {val arrayBuffer ArrayBuffer[Int]()//默认情况下都是在ArrayBuffer末尾增加元素arrayBuffer 1arrayBuffer (4,5,6,7,8,9,10)arrayBuffer Array(1,2…

spring cloud微服务分布式云架构 - Spring Cloud集成项目简介

Spring Cloud集成项目有很多&#xff0c;下面我们列举一下和Spring Cloud相关的优秀项目&#xff0c;我们的企业架构中用到了很多的优秀项目&#xff0c;说白了&#xff0c;也是站在巨人的肩膀上去整合的。在学习Spring Cloud之前大家必须了解一下相关项目&#xff0c;希望可以…

Nokia落寞身影下 三星成为全球最大手机厂商

摘要&#xff1a;在诺基亚统治全球最大手机厂商宝座长达14年后&#xff0c;三星今年首次取代诺基亚&#xff0c;成为全球最大手机厂商。据IHS iSuppli的数据显示&#xff0c;三星预计今年手机出货量将占全球29&#xff05;&#xff0c;而落寞的诺基亚市场份额将下降到24&#x…

Linux中cp和scp命令的使用方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Linux为我们提供了两个用于文件copy的命令&#xff0c;一个是cp&#xff0c;一个是scp&#xff0c;但是他们略有不同。 cp --- 主要是用…

Django:学习笔记(2)——创建第一个应用

Django&#xff1a;学习笔记(2)——创建第一个应用 创建应用 在 Django 中&#xff0c;每一个应用都是一个 Python 包&#xff0c;并且遵循着相同的约定。Django 自带一个工具&#xff0c;可以帮你生成应用的基础目录结构&#xff0c;这样你就能专心写代码&#xff0c;而不是创…

dubbo源码解析(十)远程通信——Exchange层

远程通讯——Exchange层 目标&#xff1a;介绍Exchange层的相关设计和逻辑、介绍dubbo-remoting-api中的exchange包内的源码解析。前言 上一篇文章我讲的是dubbo框架设计中Transport层&#xff0c;这篇文章我要讲的是它的上一层Exchange层&#xff0c;也就是信息交换层。官方文…

嵌入式软件开发工程师谈软件架构的设计

嵌入式软件开发工程师谈软件架构的设计 注&#xff1a;此处嵌入式特指基于linux平台&#xff0c;单片机和其他rtos不在讨论范围 笔者从事嵌入式软件开发有6&#xff0c;7个年头&#xff0c;bsp&#xff0c;驱动&#xff0c;应用软件&#xff0c;android hall&#xff0c;fram…

为何获得风险投资的公司多数倒闭了?

北京时间12月12日消息&#xff0c;据国外媒体报道&#xff0c;哈佛商学院的高级讲师施克哈尔高希(Shikhar Ghosh)指出&#xff0c;风险投资领域的失败案例比媒体报道的要多得多。 高希的研究表明&#xff0c;在风险资本支持的公司之中&#xff0c;有75%的公司从未向投资者返回过…

Linux rm命令、Linux touch命令、Linux tee命令

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Linux rm命令用于删除一个文件或者目录。 语法 rm [options] name...[options] name... 参数&#xff1a; -i 删除前逐一询问确认。…

highCharts使用中问题总结

想出一张图表&#xff0c;数据是多条线体&#xff0c;45天的数据展示最近15天的。并且每次展示其中一条。可以切换时间看前面的 或者后面的。最开始遇到的问题是&#xff0c;展示一条线体成功&#xff0c;但是在切换线体的时候&#xff0c;成功但是接着刷新到最开始的状态。跟同…