python爬虫_入门_翻页

写出来的爬虫,肯定不能只在一个页面爬,只要要爬几个页面,甚至一个网站,这时候就需要用到翻页了

其实翻页很简单,还是这个页面http://bbs.fengniao.com/forum/10384633.html,话说我得给这个人增加了多大的访问量啊……

10384633重点关注下这个数字,这个就是页面的名称,现在尝试把这个数字+/-1看看有没有结果

验证http://bbs.fengniao.com/forum/10384634.html

python爬虫_入门_翻页

可以看到,这个页面是可以访问的

再试试http://bbs.fengniao.com/forum/10384632.html,这次不截图了,可以自己去试试,也是可以访问的

那么接下来就好办了,只要把这个数字每次+1或-1就可以了,甚至可以从http://bbs.fengniao.com/forum/1.html开始尝试连接,一直+1,直到502或404断开

下面上代码,还是用之前的内容,这次加了个页面处理的函数

#!/usr/bin/python
coding: UTF-8

import urllib
import urllib2
import re

#处理地址,并获取页面全部的图片地址
def get_image_url(url):
  #url_format = urllib2.Request(url) #1
  url_open = urllib.urlopen(url) #2
  url_read = url_open.read() #3
  re_value = re.compile('(?')
  image_url_list = re.findall(re_value,url_read) #4
  return image_url_list

#这个函数专门用来下载,前面两行是将图片连接中/前面的内容全部删除,留下后面的文件名用来保存文件的,try不说了,不清楚请翻回去看容错
def down_image(image_url):
  rev = '^.*/'
  file_name = re.sub(rev,'',image_url)
  try:
    urllib.urlretrieve(image_url,file_name)
  except:
    print 'download %s fail' %image_url
  else:
    print 'download %s successed' %image_url

#这个函数用来处理页面,每次+1
def get_page(url):
  url_num = re.search('(?',url)
  url_num = url_num.group()
  url_num_1 = int(url_num) + 1
  url = url.replace(url_num,str(url_num_1))
  return url

if __name__ == '__main__':
  url = 'http://bbs.fengniao.com/forum/10384633.html'
  for n in range(1,10):
    url = get_page(url)
    image_url_list = get_image_url(url)
    for image_url in image_url_list:
      down_image(image_url) #5

其实可以给get_page传两个参数,一个是URL另一个是递增的数值,就变成了get_page(url,n),但是我没有这么写,可以思考下为什么,如果把for n in range(1,10)改成while True会怎样?嘿嘿……回头人家封你IP可别找我啊

Original: https://www.cnblogs.com/xiu123/p/9094956.html
Author: 咻_python
Title: python爬虫_入门_翻页

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578181/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • [编译] 7、在Linux下搭建安卓APP的开发烧写环境(makefile版-gradle版)—— 在Linux上用命令行+VIM开发安卓APP

    April 18, 2020 6:54 AM – BEAUTIFULZZZZ 0 前言 1 gradle 安装配置 1.1 卸载系统默认装的gradle 1.2 下载对…

    Linux 2023年6月8日
    0158
  • 学习一下 SpringCloud (五)– 配置中心 Config、消息总线 Bus、链路追踪 Sleuth、配置中心 Nacos

    (1) 相关博文地址: 学习一下 SpringCloud (一)– 从单体架构到微服务架构、代码拆分(maven 聚合): https://www.cnblogs.com/l-y…

    Linux 2023年6月14日
    0119
  • 缓冲区溢出二:从缓冲区溢出到获取反弹shell实例

    一、说明 之前写过一篇”缓冲区溢出一:函数调用过程中的堆栈变化及缓冲区溢出利用原理“,道理讲得还可以,但现在看还是需要一个示例来讲解从攻击角度如何实现返回地…

    Linux 2023年5月28日
    0106
  • Spring Session Redis

    http://www.infoq.com/cn/articles/Next-Generation-Session-Management-with-Spring-Session Or…

    Linux 2023年5月28日
    082
  • 十、进程管理

    什么是进程?进程(Process)是一个程序在其自身的虚拟地址空间的一次执行活动。之所以要创建进程,就是为了使多个程序可以并发的执行,从而提高系统的资源利用率和吞吐量。简单来说进程…

    Linux 2023年6月7日
    0132
  • Tomcat性能优化方案

    你使用过tomcat的话,简单的说就是”内存溢出”. 通常情况下,这种问题出现在实际的生产环境中.产生这种问题的原因是tomcat使用较少的内存给进程,通过…

    Linux 2023年6月14日
    099
  • Redis 事务与锁

    基本操作 事务的基本操作 开启事务,设定事务的开启位置,此指令执行后,后续的所有指令均加入到事务中 multi 取消事务,终止当前事务的定义,发生在 multi 之后,exec 之…

    Linux 2023年5月28日
    076
  • LinuxKernel(一)

    首先,回顾一下基础的宏操作: C语言宏 # 与 ## #的作用是字符串化:在一个宏中的参数前面使用一个#,预处理器会把这个参数转换为一个字符数组 #define ERROR_LOG…

    Linux 2023年6月8日
    0103
  • 如何设置redis中hash的field的expire ?

    redis 127.0.0.1:6379> hset expire:me name tom (integer) 0 redis 127.0.0.1:6379> hget…

    Linux 2023年5月28日
    0104
  • JDK8-Lambda 表达式

    Lambda 表达式 Lambda 表达式是 JDK8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的 Java 代码,尤其在集合的遍历和其他集合操作中,可以极大地优化代码…

    Linux 2023年6月13日
    072
  • 001.云桌面整体解决方案实施

    桌面云概述 桌面云介绍 本桌面云整体交付方案基于深信服aDesk桌面云实现。 深信服桌面云是采用云计算的思想,将用户的桌面操作系统以服务的形式通过网络进行交付,可以让用户在不同设备…

    Linux 2023年6月13日
    0108
  • RPA 抖音机器人汇总

    bash;gutter:true; 一、RPA 抖音小店催好评机器人 RPA机器人详情: 1、配置好抖音小店订单号与催好评话术 2、启动抖音小店催好评机器人 3、机器人打开飞鸽客服…

    Linux 2023年6月7日
    083
  • 回溯法:算法思路以及相关流程图的绘制

    参考建模原文2020国赛B题参考文章1 回溯法介绍 深度优先搜索(缩写DFS):对一个连通图进行遍历的算法。它的思想是从一个顶点V0开始,沿着一条路一直走到底,如果发现不能到达目标…

    Linux 2023年6月14日
    083
  • NTP和chrony时间同步

    古代计时方式 ●在远古时期,人类用来确定时间的方式是一些自然界”相对”亘古不变的周期。如地球的公转是为一年,月球的公转是为一月,地球的自转是为一天等,最早的…

    Linux 2023年6月7日
    0103
  • Rprop 与 RMSprop 优化器

    https://www.cnblogs.com/setdong/p/16508415.html 1. Rprop 在 full-batch optimization 中, 一些梯度…

    Linux 2023年6月7日
    080
  • Python schedule 库定时任务

    Python schedule 库定时任务 schedule的使用 用于scrapy定时任务设置 import schedule import time def job(): pr…

    Linux 2023年6月13日
    092
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球