Python开发模块:Urllib
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python开发模块:Urllib相关的知识,希望对你有一定的参考价值。
Urllib实战
1、爬取糗事百科中段子和用户名:
代码实例:
# 爬取网站页面内容 import re import urllib.request url = ‘https://www.qiushibaike.com/8hr/page/%s/?s=4991994‘ headers =(‘User-Agent‘,‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36‘) def getcontent(url,page): # 模拟浏览器 opener = urllib.request.build_opener() opener.addheaders = [headers] urllib.request.install_opener(opener) # 获取html信息 html = urllib.request.urlopen(url%page).read().decode(‘utf-8‘) pat_author = ‘<div class="author clearfix">.*?<h2>(.*?)</h2>‘ pat_content = ‘<div class="content">.*?<span>(.*?)</span>‘ authors = re.compile(pat_author,re.DOTALL).findall(html) # re.DOTALL .可以匹配任意字符\\n contents = re.compile(pat_content,re.DOTALL).findall(html) for num in range(len(authors)): print(‘用户%s是:‘%(num+1),authors[num]) print(‘内容是:\\n‘,contents[num]) if __name__ == ‘__main__‘: for i in range(4,5): getcontent(url,str(i))
打印信息:
用户1是: AM八八神 内容是: 突然好怀念零几年的时候QQ刚开始普及,大家搜索陌生人添加聊天,在各种QQ群里神侃大山,无止尽的样子。那时候的新奇与探索。 用户2是: 火炎焱4 内容是: 昨天到哥们家吃饭,喝了点酒,没敢开车,只好坐末班公交车(夜11点半)上车后除了司机就我一人!车走了几站,上来一位女孩坐在我前面,突然这女孩头一仰自己把头发拽下来了!把我吓的各种鬼怪涌上脑里!仔细一看是假发套,妈的吓死了 用户3是: 金钱好酒婊子与狗 内容是: 昨晚跟几个朋友在外面聊天,有几个老外走过来跟我们打招呼,出于礼貌本帅用了一手中英混合语言跟他们强行交流了半天。。。 或许说是男人的那种默契是不分国界吧。。。<br/>最后把方向锁定在对面的足浴城!! 用户4是: 江左-梅郎 内容是: 至少五个字 用户5是: 大宝天天见变成天天大保健 内容是: 这个留言也是太厉害了,新技能啊! 用户6是: 傻洛 内容是: 一天我闺蜜在把着她小儿子嘘嘘,突然来了一句“你看我儿子这家伙那么小,真愁人”我想都没想就说了一句“估计是遗传他爸吧”最近闺密看我眼神都不一样了 用户7是: deviruchi 内容是: 我有个同事叫刘士坚,我们都管他叫时间,有一次公司想做个产品广告,就开了个会讨论,我这个同事出去见客户会开到一半才回来,我们对广告的时长有分歧,这时候同事刚好推门进来,正好老总说到:“我不管,反正你们要把时间给我掐死!”然后我这位同事一脸震惊的默默退出门外吧门关上了,我们集体愣了几秒然后狂笑的岔不过气来…… 用户8是: 莫纳的世界 内容是: 陪熊孩纸去淘气堡玩,看秋千那四处没人,想上去体验一把,但又怕秋千承受不了我的体重……坐上去我才知道我想多了……卡秋千座上了,更别说荡了! 用户9是: 匿名用户 内容是: 晚上和儿子在床上闹腾,老婆进来说,娃太兴奋了不好睡觉,别玩“武”的了,来点“文”的吧。<br/>娃恰好放了个响屁,说:给你闻吧! 用户10是: 江江和乐乐 内容是: 你能想象我在一个四面透风的厕所里尿尿,尿得正爽的时候,突然从前面破洞里伸进来一个光秃秃的脑袋,吓得劳资浑身一激灵。一个剎不住车,尿了他一头的情景吗……后来才知道,他刚刚在这蹲坑,想回来看看钥匙是不是掉这了。。。。。 用户11是: 绦子 内容是: 时光的故事…… 用户12是: 蜗牛也是牛妞 内容是: 想问问首付多少…… 用户13是: 上帝之手001 内容是: 听别人说的,大学英语考试(英语考试大部分是选择),临交卷5分钟同学传过来答案马上开始抄,抄到最后发现答案少两个,当场就崩溃了 用户14是: 文宇荃 内容是: 生了小女儿都一年多了平躺还摸不到肋骨。 用户15是: 懂,又怎样? 内容是: 刚刚来大号去上厕所,进去后发现爆满,里面太臭,我走出来,在门外踩着碎步等……就在这时马路上走来一个皮肤白皙,五官清秀,俊郎,的短发少年,准备上厕所,我好心提醒:“嘿!兄弟,我劝你还是等一下吧!里面我都看了,全爆满!”<br/>他一听顿时就怒了大骂到:“你个臭不要脸的流氓!谁跟你是兄弟呀!”说完,狠狠的踩了我一脚,转身进了女厕…… 用户16是: 阿·木 内容是: 最近天气持续闷热,夜里突然下起了大暴雨。电闪雷鸣!媳妇儿像一只小小鸟紧紧的依偎在我的怀里,瑟瑟发抖。我才明白,原来平日里让我跪搓衣板,凶巴巴的‘母老虎’媳妇儿怕的是老天爷!!! 用户17是: 道士下山会女神 内容是: 感冒发烧需住院治疗,医院内外一冷一热,老婆也渐有热伤风的迹象,就报怨说:就你这小身板,动不动就感冒,婚前咋没听你说起过呢?<br/>楼主一听不悦的回道:小时候你从你家门口三米多高的坎上摔下去,把头摔得有点糊涂了,婚前你不是也没说起过? 用户18是: 冉冉阿冉啊 内容是: 一入糗百纯洁已不再。刚才无聊在糗友圈看,看到有一个人提问:女人能接受多大的?我正要评论十岁以内吧,年龄不重要。然后刷评论的时候看到18cm,我就赶紧把我的评论删了,怕在那种场合显得我格格不入……捂脸 用户19是: 这个名字你用不了 内容是: 当年期末考试让舍友罩着我,别说他还挺义气!<br/>12个选择题整齐的一排11个答案,有一题不会,也没说是哪一题不会!<br/>那一年,我的数学有史以来最牛逼的,5分:我蒙对了最难的选择题,还有一个学霸是自己做出来的! 用户20是: 恶意一个车 内容是: 刚才我在扫地,宝宝过来的,一个手拿着垃圾袋,一个手吃着鸡蛋,我让他把袋扔了,他看了看我把蛋扔了。。。。小孩子的世界你不懂。
2、爬取照片存放到本地
代码实例:
# 爬取图片、下载到本地 import re import os import urllib.request url = ‘http://www.nipic.com/photo/other/index.html?page=‘ # 访问的地址 receive = ‘D:\\\\spider‘ # 存储路径 def craw(url,page): html = urllib.request.urlopen(url+page).read().decode(‘utf-8‘) # 第一步过滤 par_div =‘<div class="search-result overflow-hidden">.*<div class="common-page-box mt10 align-center">‘ result_div = re.compile(par_div,re.DOTALL).findall(html) html = result_div[0] # 第二部过滤 par_img = ‘<img src="(http://.*?\\.jpg)" alt="(.*?)" />‘ result_img = re.compile(par_img).findall(html) if not result_img: return False # 最后一页为空跳出 for img in result_img: img_url = img[0] img_name = receive + ‘\\\\P‘ + str(page)+ ‘-‘ + img[1] +‘.jpg‘ # 路径+图片名 file_name = same_name(img_name) try: urllib.request.urlretrieve(img_url, file_name) except urllib.error.URLError as e: if hasattr(e,‘code‘): print(e.code) if hasattr(e,‘reason‘): print(e.reason) return True def same_name(imgname,times=0): # 同名文件加数字区分 if os.path.exists(imgname): times +=1 file,extension = imgname.split(‘.‘) file = file.strip(‘(%s)‘%(times-1)) imgname = ‘%s(%s).%s‘%(file,times,extension) return same_name(imgname,times) else: return imgname if __name__ == ‘__main__‘: # 爬取1到9页的内容 for page in range(1,10): ret = craw(url,str(page)) if not ret: break print(‘End page[%s]‘%page)
爬取结果:
3、爬取页面中所有的链接
代码实例:
# 爬取链接 import re import urllib.request url = ‘http://blog.csdn.net/‘ headers =(‘User-Agent‘,‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36‘) def get_link(): opener = urllib.request.build_opener() opener.addheaders = [headers] urllib.request.install_opener(opener) html = urllib.request.urlopen(url).read().decode(‘utf-8‘) pat_url = ‘(http?://[^\\s";]+\\.(\\w|/)+)‘ result = re.compile(pat_url).findall(html) result = list(set(result)) for link in result: print(link[0]) if __name__ == ‘__main__‘: get_link()
打印输出:
http://avatar.csdn.net/4/1/6/3_qq446282412.jpg http://blog.csdn.net/u010989951/article/details/75096153 http://img.knowledge.csdn.net/upload/base/1465887837340_340.jpg http://static.blog.csdn.net/static/images/expert_apply.png http://blog.csdn.net/wzy0623 http://blog.csdn.net/column/details/16013.html http://static.blog.csdn.net/static/css/font-awesome.min.css http://edu.csdn.net/huiyiCourse/series_detail/45 http://avatar.csdn.net/2/D/B/3_itmyhome.jpg http://lib.csdn.net/base/java http://avatar.csdn.net/A/0/5/3_sinat_26917383.jpg http://blog.csdn.net/ITermeng http://lib.csdn.net http://blog.csdn.net/qq446282412 http://blog.csdn.net/ahence/article/details/75090340 http://blog.csdn.net/epubit17/article/details/75119653 http://blog.csdn.net/change_on http://avatar.csdn.net/D/3/8/2_tianyaleixiaowu.jpg http://img.blog.csdn.net/20170705115657679 http://csdnimg.cn/public/static/css/avatar.css http://blog.csdn.net/a2011480169 http://blog.csdn.net/itmyhome http://blog.csdn.net/sinat_26917383 http://avatar.csdn.net/F/0/E/3_10km.jpg http://static.blog.csdn.net/ads/home_top2.html http://csdnimg.cn/pubfooter/js/publib_footer.js http://c.csdnimg.cn/pubfooter/js/tracking.js http://blog.csdn.net/ouyang_peng/article/details/75146841 http://blog.csdn.net/taiji1985/article/details/75087742 http://img.knowledge.csdn.net/upload/base/1455589744328_328.jpg http://avatar.csdn.net/A/4/1/3_u014738140.jpg http://img.blog.csdn.net/20170714161848587 http://avatar.csdn.net/B/7/7/4_a2011480169.jpg http://blog.csdn.net/u011304970/article/details/74989260 http://blog.csdn.net/happycxz/article/details/73223916 http://static.blog.csdn.net/static/js/apps/blog_index.js http://avatar.csdn.net/5/C/4/3_sileixinhua.jpg http://img.blog.csdn.net/20170711173622170 http://www.mycat.i http://counter.csdn.net/pv.aspx http://blog.csdn.net/Marksinoberg http://blog.csdn.net/column/details/13719.html http://avatar.csdn.net/C/C/1/3_u010989951.jpg http://lib.csdn.net/base/react http://blog.csdn.net/byeweiyang/article/details/75102051 http://static.blog.csdn.net/static/images/write_blog.png http://static.blog.csdn.net/static/css/common_index.css http://blog.csdn.net/blogdevteam http://blog.csdn.net/neacy_zz/article/details/75090239 http://blog.csdn.net/sileixinhua/article/details/75091365 http://avatar.csdn.net/7/F/6/3_panxl6.jpg http://static.blog.csdn.net/static/images/mod_viewpoint.png http://static.blog.csdn.net/static/images/cloumn.png http://avatar.csdn.net/A/A/E/3_happycxz.jpg http://c.csdnimg.cn/public/common/toolbar/js/toolbar.js http://avatar.csdn.net/B/D/6/3_neacy_zz.jpg http://blog.csdn.net/wangyongyao1989 http://blog.csdn.net/chaoyuan899 http://img.blog.csdn.net/20170616193506768 http://blog.csdn.net/u011304970/article/details/74938457 http://avatar.csdn.net/3_guest.jpg http://static.blog.csdn.net/static/images/export.png http://blog.csdn.net/Neacy_Zz http://avatar.csdn.net/F/A/3/3_itermeng.jpg http://blog.csdn.net/u010989951 http://static.blog.csdn.net/static/images/icon_r.png http://img.knowledge.csdn.net/upload/base/1453701371636_636.jpg http://avatar.csdn.net/C/1/5/3_aqi00.jpg http://avatar.csdn.net/3/2/7/3_chaoyuan899.jpg http://blog.csdn.net/blogdevteam/article/details/75116901 http://avatar.csdn.net/3/B/2/2_stven_king.jpg http://c.csdnimg.cn/public/favicon.ico http://avatar.csdn.net/5/3/5/3_hopeztm.jpg http://ads.csdn.net/js/async_new.js http://csdnimg.cn/public/common/libs/bootstrap/css/bootstrap.css http://blog.csdn.net/column/details/15386.html http://blog.csdn.net/aqi00/article/details/75096214 http://blog.csdn.net/aqi00 http://avatar.csdn.net/9/4/7/3_change_on.jpg http://blog.csdn.net/wangyangzhizhou/article/details/75195501 http://img.blog.csdn.net/20170714101354092 http://blog.csdn.net/hopeztm/article/details/75003369 http://static.blog.csdn.net/scripts/cnick.js http://static.blog.csdn.net/static/css/blog_index.css http://img.blog.csdn.net/20170705115941151 http://static.blog.csdn.net/static/images/opinion.png http://img.knowledge.csdn.net/upload/base/1479972981201_201.jpg http://img.blog.csdn.net/20170505163238984 http://img.blog.csdn.net/20170619113818542 http://lib.csdn.net/base/android http://blog.csdn.net/epubit17 http://c.csdnimg.cn/pubfooter/js/publib_footer.js http://blog.csdn.net/u011304970/article/details/75003397 http://blog.csdn.net/wangyongyao1989/article/details/75139633 http://blog.csdn.net/experts/rule.html http://avatar.csdn.net/B/B/8/2_king1425.jpg http://img.blog.csdn.net/20170518101810792 http://blog.csdn.net/u014738140 http://avatar.csdn.net/0/8/F/4_marksinoberg.jpg http://static.blog.csdn.net/static/images/back_top.png http://avatar.csdn.net/8/C/E/3_blogdevteam.jpg http://ads.csdn.net/js/tracking.js http://static.blog.csdn.net/static/images/blog_move_big.png http://blog.csdn.net/stven_king http://blog.csdn.net/sinat_26917383/article/details/75050225 http://avatar.csdn.net/D/B/1/3_epubit17.jpg http://avatar.csdn.net/D/E/3/3_byeweiyang.jpg http://blog.csdn.net/panxl6/article/details/75096149 http://static.blog.csdn.net/static/images/triangle_right.png http://write.blog.csdn.net/postedit http://blog.csdn.net/10km http://blog.csdn.net/Byeweiyang http://blog.csdn.net/wemedia/details.html http://avatar.csdn.net/0/6/A/3_wangyongyao1989.jpg http://blog.csdn.net/chaoyuan899/article/details/75089447 http://c.csdnimg.cn/public/common/toolbar/js/html.js http://csdnimg.cn/public/common/libs/jquery/jquery-1.11.1.min.js http://img.blog.csdn.net/20170705115746496 http://static.blog.csdn.net/static/images/icon_l.png http://blog.csdn.net/10km/article/details/75095833 http://write.blog.csdn.net http://blog.csdn.net/u011304970/article/details/74936112 http://static.csdn.net/public/common/toolbar/js/toolbar.js http://blog.csdn.net/happycxz http://blog.csdn.net/panxl6 http://static.blog.csdn.net/static/images/blog_move.png http://avatar.csdn.net/A/5/7/3_taiji1985.jpg http://blog.csdn.net/hopeztm/article/details/75101158 http://static.csdn.net/public/common/toolbar/css/index.css http://bbs.csdn.net/topics/391959736 http://blog.csdn.net/hopeztm http://blog.csdn.net/tianyaleixiaowu http://blog.csdn.net/turingbooks/article/details/73480804 http://blog.csdn.net/itmyhome1990/article/details/74971622 http://blog.csdn.net/itermeng/article/details/75023320 http://img.blog.csdn.net/20170714100230514 http://blog.csdn.net/change_on/article/details/75134657 http://c.csdnimg.cn/public/common/toolbar/js/notify.js http://static.blog.csdn.net/static/js/libs/html5shiv.min.js http://blog.csdn.net/TaiJi1985 http://lib.csdn.net/base/ai http://blog.csdn.net/King1425 http://blog.csdn.net/column/details/14549.html