博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python-27:如何获取多个页面的源码
阅读量:6089 次
发布时间:2019-06-20

本文共 1700 字,大约阅读时间需要 5 分钟。

hot3.png

在这里先给大家推荐一个网站:

这是一个英文的网站,现在也是时候开始看看这些英文的文档了,这个文档是python的一个简短的教程,会包含一些函数原型,我是在查询函数原型的时候看到的
闲话不多说,我们再来看看极视界的网址

这个photograph_1,引起了我的注意,它是不是还有很多页,既然说到了就来试一下

这个页面也是可以打开的,那么问题来了,总共有多少页呢?

这个还真不知道,但是我在想着怎么能获取前面十页网页的源码,或许我应该说得再具体一点
我想要看看前面10页一共有多少相册,并把相册名字输出出来,这需要两个步骤
1. 爬取前面10页的网页源码
2. 使用RE将相册名字获取出来
使用RE相信已经很熟练了,那就来说说怎么爬取前面10页的网页代码吧
首先我得想一个办法把网址当中的1,2,3......在程序中实现自动替换,那么我第一步应该尝试怎么能依次输出1到10这几个数字,上网去查发现有好多种方法,有使用循环,使用遍历的方法,但是我更加倾向于使用range()这个函数,大家可以去查查range()函数的用法,这里不做过多的说明,还是那句话,多看几个网页,会有更多收获

26131656_wGBK.jpg

 range()函数的参数

1. start:计数从start开始。默认是从0开始。例如range(5)等价于range(0, 5);
2. end:计数到end结束,但不包括end.例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
3. scan:每次跳跃的间距,默认为1,例如:range(0, 5,2)是[0,2,4]
好了,使用range()函数和字符串的拼接,我们大概可以实现这个功能,试试看吧

#!/usr/bin/env python# -*- coding: UTF-8 -*-__author__ = '217小月月坑'# 将url拆成两部分,在这个部分的后面加上页数即可访问相应的页面url_head = 'http://product.yesky.com/more/506001_31372_photograph_'# 遍历 range()列表里面的元素,由于range()不包含结束的数值,所以我们要获取# 10页,这个end就要写成11for i in range(1,11):    url = url_head+str(i)+'.shtml'        print url

输出结果:

26131656_O6ga.jpg

把这个功能加到我们原来的代码中应该是这样的

#!/usr/bin/env python# -*- coding:UTF-8 -*-__author__ = '217小月月坑'import urllib2import reurl_head = 'http://product.yesky.com/more/506001_31372_photograph_'user_agent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0'headers = {'User-Agent':user_agent}try:    # 设置第1页到第10页的网址    for i in range(1,11):        url = url_head+str(i)+'.shtml'        print url        request = urllib2.Request(url,headers=headers)        response = urllib2.urlopen(request)        # 对获取的网页源码进行编码        conents = response.read().decode("gbk")        # 使用RE获取每一页的相册主页和相册名字        pattern = re.compile(r'

输出结果:

26131657_zNOx.jpg

 

转载于:https://my.oschina.net/u/2429887/blog/535860

你可能感兴趣的文章
根据Uri获取文件的绝对路径
查看>>
Flutter 插件开发:以微信SDK为例
查看>>
.NET[C#]中NullReferenceException(未将对象引用到实例)是什么问题?如何修复处理?...
查看>>
边缘控制平面Ambassador全解读
查看>>
Windows Phone 7 利用计时器DispatcherTimer创建时钟
查看>>
程序员最喜爱的12个Android应用开发框架二(转)
查看>>
vim学习与理解
查看>>
DIRECTSHOW在VS2005中PVOID64问题和配置问题
查看>>
MapReduce的模式,算法以及用例
查看>>
《Advanced Linux Programming》读书笔记(1)
查看>>
zabbix agent item
查看>>
一步一步学习SignalR进行实时通信_7_非代理
查看>>
AOL重组为两大业务部门 全球裁员500人
查看>>
字符设备与块设备的区别
查看>>
为什么我弃用GNOME转向KDE(2)
查看>>
Redis学习记录初篇
查看>>
爬虫案例若干-爬取CSDN博文,糗事百科段子以及淘宝的图片
查看>>
Web实时通信技术
查看>>
第三章 计算机及服务器硬件组成结合企业运维场景 总结
查看>>
IntelliJ IDEA解决Tomcal启动报错
查看>>