林天宇用Python3学习编写网络爬虫之一Word下载.docx
- 文档编号:8247858
- 上传时间:2023-05-10
- 格式:DOCX
- 页数:15
- 大小:4.21MB
林天宇用Python3学习编写网络爬虫之一Word下载.docx
《林天宇用Python3学习编写网络爬虫之一Word下载.docx》由会员分享,可在线阅读,更多相关《林天宇用Python3学习编写网络爬虫之一Word下载.docx(15页珍藏版)》请在冰点文库上搜索。
●如何安装Pyhon3?
请查阅其他文档。
●PyCharm是什么?
为什么不用其他工具。
一个常用的Python开发工具,个人喜欢,可参阅其他文档。
如果你不喜欢,你也可以用其他工具编码和调试。
二、快速开始
东北人有句话说:
能动手,尽量不瞎叨叨。
少些废话,快速开干。
1、新建项目和文件
启动PyCharm,“CreateNewProject”。
因为估计不需要到特别的框架,所以类型就默认地选择了“PurePython”,名字就起成了“WebSpider”(我瞎命名的,就是觉得Spider比较帅气而已),然后“Create”如下图:
新建一个Python文件,命名为Spider001,毕竟也是我的第一只小爬虫嘛。
OK,到目前为止,已经新建一个名字叫做Spider001的Python空白文件了。
可以在项目等资源管理器中看到WebSpider项目下面,有一个Sider001.py的文件。
我们接下来就对这个Sider001.py文件进行编辑和测试。
2、第一爬
先写代码,感受一下效果,找找成就感,然后再详细分析和思考。
代码如下:
importurllib.request
url="
"
data=urllib.request.urlopen(url).read()
data=data.decode('
UTF-8'
)
print(data)
然后,Run,选择Spider001.py,运行结果如下:
由上图可以见,运行正常,而且已经将XX的HTML代码获取到了(见运行窗口的第二行HTML代码)。
XX心想,我也不知道倒了什么霉,你们爬虫测试的HelloWorld都喜欢拿我测试,无谓增加我压力。
那我们再回头来详细看看刚才的代码:
#首先引入urllib库的request子库
#接着定义一个我们要爬取的变量叫url
#然后将我们要爬去的网址字符串值赋给url
#可怜的XX。
#定义一个data变量,用来获取爬过来的字符串
#下面是urllib的吧啦吧啦的用法,没什么好解释的。
#它就是这么用的,记住就好了。
#其中url是变量。
#编码,改变编码。
decode方法。
#print打印出来结果。
#程序结束
我们可以得出以下几点初学者的心得:
●用到一个urllib的库。
Urllib库及其子库的用法,官方文档如下:
https:
//docs.python.org/3/library/urllib.html
●其获取url其内容的方法为:
urllib.request.urlopen(url地址).read()
●将字符串本身使用decode(‘编码类型’)的方法后,可以重新编码
3、美女图片!
美女图片!
!
都说美女是推动社会发展的重要因素,对美女的追求,也是推动我们宅男技术水平的重要因素。
当年在学校机房里用486电脑DOS环境下,冒着被机房老师抓住的生命危险偷偷看舒淇的图片,确实对我当年的技术水平提升很大。
第一爬的过程中,只爬了一串HTML源代码,似乎新鲜劲很快就过去了,真正我们要爬的,是美女图美女图啊!
网站美女图片站众多,我本想选择我最喜欢的BeautyLeg作为测试的网站,但是很遗憾,可能这个网站的服务器在其他地区,网络速度很慢,图片质量又高,所以每次运行时间都会比较长,不太适合我们前期作为边调试边学习用。
所以暂时放弃,不过,美腿们,不要着急,我调试好后,再来爬去你们。
不要着急,等我。
在此情况下,我随便XX了一个“美女图库”网站。
真是XX的,一点广告费都没给的,美女图库。
这个网站也是典型的“三级”结构的网站。
所谓“三级”结构(别想歪了),指的是:
我们先从最简单的开始,先将目标定在基础,也就是最详细这一级的内容开始爬取。
我们先点击网站链接,到达第三级的详细图(文)这一层网页。
我们避开了需要登录和收费的会员专区的栏目,选择了“免费下载栏目”进入,具体的网址如下:
首页:
栏目页:
内容页:
这个网站的内容页是一个图文格式的网页,这一页有一张美女图片,我们从简单的开始,那我们就先将这一页的这张图片爬下来到本地硬盘吧。
我们用鼠标在图片上点右键,获取这张图片的准确名称和地址为:
从上述地址分析,貌似这个网站的命名还是比较清晰易懂的,能找到规律。
也就是说很可能2016是这个明星这个专辑的编号,然后每张图片从1开始依次编号命名。
明星专辑的编号是2016,也很可能明星专辑的编号,也是从1开始依次编号的。
(究竟是不是这样,会不会被打脸,后面测试了才知道。
老习惯,先上代码,看效果,找成就感。
新建一个新的py文件,命名为GetMM131.py
#估计后续得重用,所以将其写成一个函数
defget_img(url,img_name):
print('
开始读取图片地址:
'
+url)
img_info=urllib.request.urlopen(url).read()
#文件IO操作的办法,语法简单实用,一看就明白,暂时不详细说
withopen(img_name,'
wb'
)asfp:
fp.write(img_info)
已下载完毕,保存为文件:
+img_name)
return
#用the_url和the_img_name分别存储这次测试的下载的文件地址以及要保存称为的文件名
the_url="
the_img_name="
1.jpg"
#调用下载图片的函数
get_img(the_url,the_img_name)
运行效果如下:
打开程序文件所在的目录,果真1.jpg美女图已经静静地在文件夹下存在了。
4、美女图片0.2版!
好的,有点感觉了,但是还是不过瘾,看能否一次性把这个2016编号的美女图片集给全部爬下来。
我们点开了下面的分页菜单:
一页一页看下去,发现其图片的地址果然为:
……
那这就好办了,有规律,用循环来解决。
于是我们调整一下程序代码,get_img函数暂时不用变,调整一下调用该函数的方式。
于是有了以下的代码:
i=1
whilei<
=12:
#因为i的数据类型是int,不能直接变成字符串,所以采用str函数转换了一下
page_num=str(i)
the_url="
the_img_name=page_num+"
.jpg"
#调用下载图片的函数
get_img(the_url,the_img_name)
i=i+1
编写完毕,运行!
貌似一切顺利,怀着激动的心情进入文件夹,果然,12张美女图片都在文件夹里待着了。
5、美女图片0.3版
似乎总还是感觉缺少点什么,如果我们再把程序做得智能一点点,看是否可以,于是有以下几个想法的改进:
●输入为一个个人专辑的编号;
●系统自动读取该编号下图片的总数;
●系统建立一个为编号等目录,然后把该专辑的图片全部保存到该目录下。
于是我们要学习几个技能:
1)、正则表达式:
目的是要从HTML字符串里,找到“共XX页”字样,读取XX这个信息。
2)、文件夹操作:
目的是如何建立一个文件夹目录,然后将这个图片好存在这个目录里。
于是就有了以下的代码:
importre
importos
#函数get_img
#功能:
获取一个网上的图片,然后保存到本地
#参数:
url(图片的网址),img_name(图片的名称)
#需要爬取的专辑的参数编号
this_f_num=305
#获取该专辑第一页的页面信息,然后采取正则的方式,获取其中"
共多少页"
f_html=urllib.request.urlopen('
%this_f_num).read().decode('
gbk'
regex=r'
共(.*?
)页'
pa=pile(regex)
#由于获取的是一个数组格式,但只有一个数字,于是将其读取出来。
iMax=int(re.findall(pa,f_html)[0])
#建立一个目录
this_f_now=os.getcwd()
f_path=this_f_now+"
/"
+str(this_f_num)+"
ifos.path.isdir(f_path)==False:
os.mkdir(str(this_f_num))
#进入循环下载
=iMax:
str(this_f_num)+"
+page_num+"
the_img_name=f_path+page_num+"
输入对应的专辑的编号,如“1500,1771,1881”等,依次运行,效果如下:
貌似不错,然后我们到对应的目录下取看看,美女图已经安安静静地分门别类地存好了。
三、草草收尾
原来以为写个类似读书笔记或实验报告形式的文档会比较简单,但是没有想到页是比较辛苦的。
一边做一边截图,小小的一个功能,居然也写了18页。
代码依然还很臃肿,功能也还很一般。
还有一些需要注意的,如有些网站必须是浏览器才能访问,否则报错;
有的网站还需要登录之后才能查看相关信息,等等。
考虑到第一次写东西,也还是以成就感为先吧。
所以这次到内容先写到这里,也算是草草收尾。
计划在以后,还根据自己的学习情况,写一些“林天宇学习XXXX”之类的题目,大家可以在XX文库里搜索“林天宇”或“易动资讯”,没准就找到我了。
本文过程中借鉴了少量网上资料,但全文是自己编写,纯属原创,如对您有所参考,我深感荣幸。
请随意使用,我不在乎版权,也不必告知我。
呵呵。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 天宇 Python3 学习 编写 网络 爬虫 之一