加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python爬虫_入门_翻页

发布时间:2020-12-17 00:10:15 所属栏目:Python 来源:网络整理
导读:写出来的爬虫,肯定不能只在一个页面爬,只要要爬几个页面,甚至一个网站,这时候就需要用到翻页了 其实翻页很简单,还是这个页面http://bbs.fengniao.com/forum/10384633.html,话说我得给这个人增加了多大的访问量啊...... 10384633重点关注下这个数字,这

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

其实翻页很简单,还是这个页面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 style="color: #0000ff">import<span style="color: #000000"> urllib
<span style="color: #0000ff">import<span style="color: #000000"> urllib2
<span style="color: #0000ff">import<span style="color: #000000"> re

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

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

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

<span style="color: #0000ff">if <span style="color: #800080">name == <span style="color: #800000">'<span style="color: #800000">main<span style="color: #800000">'<span style="color: #000000">:
url = <span style="color: #800000">'<span style="color: #800000">http://bbs.fengniao.com/forum/10384633.html<span style="color: #800000">'
<span style="color: #0000ff">for n <span style="color: #0000ff">in range(1,10<span style="color: #000000">):
url =<span style="color: #000000"> get_page(url)
image_url_list =<span style="color: #000000"> get_image_url(url)
<span style="color: #0000ff">for image_url <span style="color: #0000ff">in<span style="color: #000000"> image_url_list:
down_image(image_url) <span style="color: #008000">#<span style="color: #008000">5

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读