林天宇用Python3学习编写网络爬虫(之一)

上传人:鲁** 文档编号:470493996 上传时间:2023-12-11 格式:DOCX 页数:18 大小:4.39MB
返回 下载 相关 举报
林天宇用Python3学习编写网络爬虫(之一)_第1页
第1页 / 共18页
林天宇用Python3学习编写网络爬虫(之一)_第2页
第2页 / 共18页
林天宇用Python3学习编写网络爬虫(之一)_第3页
第3页 / 共18页
林天宇用Python3学习编写网络爬虫(之一)_第4页
第4页 / 共18页
林天宇用Python3学习编写网络爬虫(之一)_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《林天宇用Python3学习编写网络爬虫(之一)》由会员分享,可在线阅读,更多相关《林天宇用Python3学习编写网络爬虫(之一)(18页珍藏版)》请在金锄头文库上搜索。

1、林天宇用Python3学习编写网络爬虫之一:入门实践林天宇一、写在前面1、本文适应的读者围l 会一点点Python的根本语法;l 已经安装好了Python3和PyCharm;l 网络爬虫新手2、本文所使用的开发环境l Mac pro / iOSl Python3l PyCharm3、本文不纠结以下容l 为什么选择Python3而不是Python2?答:没什么特别原因,个人喜好。l 如何安装Pyhon3?请查阅其他文档。l PyCharm是什么?为什么不用其他工具。一个常用的Python开发工具,个人喜欢,可参阅其他文档。如果你不喜欢,你也可以用其他工具编码和调试。二、快速开场东北人有句话说:能

2、动手,尽量不瞎叨叨。少些废话,快速开干。1、新建项目和文件启动PyCharm,“Create New Project。因为估计不需要到特别的框架,所以类型就默认地选择了“Pure Python,名字就起成了“WebSpider我瞎命名的,就是觉得Spider比拟帅气而已,然后“Create如下列图:新建一个Python文件,命名为Spider001,毕竟也是我的第一只小爬虫嘛。OK,到目前为止,已经新建一个名字叫做Spider001的Python空白文件了。可以在项目等资源管理器中看到WebSpider项目下面,有一个Sider001.py的文件。我们接下来就对这个Sider001.py文件进

3、展编辑和测试。2、第一爬先写代码,感受一下效果,找找成就感,然后再详细分析和思考。代码如下:import urllib.requesturl = .baidu.data = urllib.request.urlopen(url).read()data = data.decode(UTF-8)print(data)然后,Run,选择Spider001.py,运行结果如下:由上图可以见,运行正常,而且已经将百度的HTML代码获取到了见运行窗口的第二行HTML代码。百度心想,我也不知道倒了什么霉,你们爬虫测试的HelloWorld都喜欢拿我测试,无谓增加我压力。那我们再回头来详细看看刚刚的代码:#首

4、先引入urllib库的request子库import urllib.request#接着定义一个我们要爬取的变量叫url# 然后将我们要爬去的网址字符串值赋给url# 可怜的百度。url = .baidu.# 定义一个data变量,用来获取爬过来的字符串# 下面是urllib的吧啦吧啦的用法,没什么好解释的。# 它就是这么用的,记住就好了。# 其中url是变量。data = urllib.request.urlopen(url).read()# 编码,改变编码。 decode方法。data = data.decode(UTF-8)# print打印出来结果。print(data)# 程序完毕我

5、们可以得出以下几点初学者的心得:l 用到一个urllib的库。Urllib库及其子库的用法,官方文档如下:l 其获取url其容的方法为:地址).read()l 将字符串本身使用decode(编码类型)的方法后,可以重新编码3、美女图片!美女图片!都说美女是推动社会开展的重要因素,对美女的追求,也是推动我们宅男技术水平的重要因素。当年在学校机房里用486电脑DOS环境下,冒着被机房教师抓住的生命危险偷偷看舒淇的图片,确实对我当年的技术水平提升很大。第一爬的过程中,只爬了一串HTML源代码,似乎新鲜劲很快就过去了,真正我们要爬的,是美女图美女图啊!美女图片站众多,我本想选择我最喜欢的BeautyL

6、eg作为测试的,但是很遗憾,可能这个的效劳器在其他地区,网络速度很慢,图片质量又高,所以每次运行时间都会比拟长,不太适合我们前期作为边调试边学习用。所以暂时放弃,不过,美腿们,不要着急,我调试好后,再来爬去你们。不要着急,等我。在此情况下,我随便百度了一个“美女图库。真是百度的,一点广告费都没给的,美女图库mm131.。这个也是典型的“三级结构的。所谓“三级结构别想歪了,指的是:我们先从最简单的开场,先将目标定在根底,也就是最详细这一级的容开场爬取。我们先点击,到达第三级的详细图文这一层网页。我们避开了需要登录和收费的会员专区的栏目,选择了“免费下载栏目进入,具体的网址如下:首页:.mm131

7、./栏目页:.mm131./mingxing/容页:.mm131./mingxing/2016.html这个的容页是一个图文格式的网页,这一页有一美女图片,我们从简单的开场,那我们就先将这一页的这图片爬下来到本地硬盘吧。我们用鼠标在图片上点右键,获取这图片的准确名称和地址为:img1.mm131./pic/2016/1.jpg从上述地址分析,貌似这个的命名还是比拟清晰易懂的,能找到规律。也就是说很可能2016是这个明星这个专辑的编号,然后每图片从1开场依次编号命名。明星专辑的编号是2016,也很可能明星专辑的编号,也是从1开场依次编号的。终究是不是这样,会不会被打脸,后面测试了才知道。老习惯,

8、先上代码,看效果,找成就感。新建一个新的py文件,命名为GetMM131.pyimport urllib.request#估计后续得重用,所以将其写成一个函数def get_img(url,img_name): print(开场读取图片地址: + url) img_info=urllib.request.urlopen(url).read() # 文件IO操作的方法,语法简单实用,一看就明白,暂时不详细说 with open(img_name,wb) as fp: fp.write(img_info) print(已下载完毕,保存为文件: + img_name) return# 用the_ur

9、l和the_img_name分别存储这次测试的下载的文件地址以及要保存称为的文件名the_url = img1.mm131./pic/2016/1.jpgthe_img_name = 1.jpg# 调用下载图片的函数get_img(the_url,the_img_name)运行效果如下:翻开程序文件所在的目录,果真1.jpg美女图已经静静地在文件夹下存在了。4、美女图片0.2版!好的,有点感觉了,但是还是不过瘾,看能否一次性把这个2016编号的美女图片集给全部爬下来。我们点开了下面的分页菜单:一页一页看下去,发现其图片的地址果然为:img1.mm131./pic/2016/1.jpgimg1.

10、mm131./pic/2016/2.jpgimg1.mm131./pic/2016/3.jpgimg1.mm131./pic/2016/12.jpg那这就好办了,有规律,用循环来解决。于是我们调整一下程序代码,get_img函数暂时不用变,调整一下调用该函数的方式。于是有了以下的代码:i=1while i=12: #因为i的数据类型是int,不能直接变成字符串,所以采用str函数转换了一下 page_num = str(i) the_url = img1.mm131./pic/2016/+page_num+.jpg the_img_name = page_num + .jpg # 调用下载图片

11、的函数 get_img(the_url, the_img_name) i=i+1编写完毕,运行!运行效果如下:貌似一切顺利,怀着冲动的心情进入文件夹,果然,12美女图片都在文件夹里待着了。5、美女图片0.3版似乎总还是感觉缺少点什么,如果我们再把程序做得智能一点点,看是否可以,于是有以下几个想法的改良:l 输入为一个个人专辑的编号;l 系统自动读取该编号下列图片的总数;l 系统建立一个为编号等目录,然后把该专辑的图片全部保存到该目录下。于是我们要学习几个技能:1、正那么表达式:目的是要从HTML字符串里,找到“共XX页字样,读取XX这个信息。2、文件夹操作:目的是如何建立一个文件夹目录,然后将

12、这个图片好存在这个目录里。于是就有了以下的代码:import urllib.requestimport reimport os# 函数get_img# 功能:获取一个网上的图片,然后保存到本地# 参数:url图片的网址,img_name(图片的名称)def get_img(url,img_name): print(开场读取图片地址: + url) img_info=urllib.request.urlopen(url).read() # 文件IO操作的方法,语法简单实用,一看就明白,暂时不详细说 with open(img_name,wb) as fp: fp.write(img_info)

13、print(已下载完毕,保存为文件: + img_name) return# 需要爬取的专辑的参数编号this_f_num = 305#获取该专辑第一页的页面信息,然后采取正那么的方式,获取其中共多少页f_html = urllib.request.urlopen(.mm131./mingxing/%s.html %this_f_num).read().decode(gbk)regex = r共(.*?)页pa = repile(regex)# 由于获取的是一个数组格式,但只有一个数字,于是将其读取出来。iMax = int(re.findall(pa,f_html)0)# 建立一个目录thi

14、s_f_now = os.getcwd()f_path = this_f_now + / + str(this_f_num) +/if os.path.isdir(f_path)=False: os.mkdir(str(this_f_num)# 进入循环下载i=1while i=iMax: #因为i的数据类型是int,不能直接变成字符串,所以采用str函数转换了一下 page_num = str(i) the_url = img1.mm131./pic/+ str(this_f_num) + / +page_num+.jpg the_img_name = f_path + page_num + .jpg # 调用下载图片的函数 get_img(the_url, the_img_name) i=i+1输入对应的专辑的编号,如“1500,1771,1881等,依次运行,效果如下:貌似不错,然后我们到对应的目录下取看看,美女图已经安安静静地分门别类地存好了。三、草草收尾原来以为写个类似读书笔记或实验报告形式的文档会比拟简单,但是没有想到页是比拟辛苦的。一边

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号