python爬虫_入门_翻页

python爬虫_入门_翻页,第1张

概述写出来的爬虫,肯定不能只在一个页面爬,只要要爬几个页面,甚至一个网站,这时候就需要用到翻页了其实翻页很简单,还是这个页面http://bbs.fengniao.com/forum/10384633.html,话说我得给这个人增加了多大的访问量啊......10384633重点关注下这个数字,这个就是页面的名称,现在尝试把这个数字+/-1看看有没有结果验证http://bbs.fengniao.com/forum/10384634.html可以看到,这个页面是可以访问的再试试http://bbs.fengniao.com/forum/10384632.html,这次不截图了,可以自己去试试,也是可以访问的那么接下来就好办了,只要把这个数字每次+1或-1就可以了,甚至可以从http://bbs.fengniao.com/forum/1.html开始尝试连接,一直+1,直到502或404断开下面上代码,还是用之前的内容,这次加了个页面处理的函数#!/usr/bin/python# coding: UTF-8import urllibimport urllib2import re#处理地址,并获取页面全部的图片地址def get_image_url(url):#url_format = urllib2.Request(url) #1url_open = urllib.urlopen(url) #2url_read = url_open.read() #3re_value = re.compile('(?<=src=").*?.jpg')image_url_list = re.findall(re_value,url_read) #4return 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_urlelse:print 'download %s successed' %image_url#这个函数用来处理页面,每次+1def get_page(url):url_num = re.search('(?<=/)[0-9]+(?=.)',url)url_num = url_num.group()url_num_1 = int(url_num) + 1url = url.replace(url_num,str(url_num_1))return urlif __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可别找我啊

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

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

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

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

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

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

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

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

<span >import<span > urllib
<span >import<span > urllib2
<span >import<span > re

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

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

<span >#<span >这个函数用来处理页面,每次+1
<span >def<span > get_page(url):
url_num = re.search(<span >'<span >(?<=\/)[0-9]+(?=.)<span >'<span >,url)
url_num =<span > url_num.group()
url_num_1 = int(url_num) + 1<span >
url =<span > url.replace(url_num,str(url_num_1))
<span >return<span > url

<span >if <span >name == <span >'<span >main<span >'<span >:
url = <span >'<span >http://bbs.fengniao.com/forum/10384633.HTML<span >'
<span >for n <span >in range(1,10<span >):
url =<span > get_page(url)
imageurlList =<span > get_image_url(url)
<span >for image_url <span >in<span > imageurlList:
down_image(image_url) <span >#<span >5

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

总结

以上是内存溢出为你收集整理的python爬虫_入门_翻页全部内容,希望文章能够帮你解决python爬虫_入门_翻页所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1208134.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-04
下一篇2022-06-04

发表评论

登录后才能评论

评论列表(0条)

    保存