python网络数据采集电子书(起点中文网越来越火爆了)
python网络数据采集电子书(起点中文网越来越火爆了)
2024-09-27 06:39:25  作者:坚强被吞噬  网址:https://m.xinb2b.cn/sport/cgc436365.html

主要讲解爬虫相关的知识如:http、网页、爬虫法律等,让大家对爬虫有了一个比较完善的了解和一些题外的知识点。


今天这篇文章,我们从今天开始就正式进入实战阶段,后面将会有更多的实际案例。

为大家讲解了HTTP原理,很多人好奇:好好的讲爬虫和HTTP有什么关系?其实我们常说的爬虫(也叫网络爬虫)就是使用一些网络协议发起的网络请求,而目前使用最多的网络协议便是HTTP/S网络协议簇。

一、Python有哪些网络库

在真实浏览网页我们是通过鼠标点击网页然后由浏览器帮我们发起网络请求,那在Python中我们又如何发起网络请求的呢?答案当然是库,具体哪些库?猪哥给大家列一下:

Python2: httplib、httplib2、urllib、urllib2、urllib3、requestsPython3: httplib2、urllib、urllib3、Requests

Python网络请求库有点多,而且还看见网上还都有用过的,那他们之间有何关系?又该如何选择?

httplib/2:这是一个Python内置http库,但是它是偏于底层的库,一般不直接用。而httplib2是一个基于httplib的第三方库,比httplib实现更完整,支持缓存、压缩等功能。一般这两个库都用不到,如果需要自己 封装网络请求可能会需要用到。urllib/urllib2/urllib3:urlliib是一个基于httplib的上层库,而urllib2和urllib3都是第三方库,urllib2相对于urllib增加一些高级功能,如:HTTP身份验证或Cookie等,在Python3中将urllib2合并到了urllib中。urllib3提供线程安全连接池和文件post等支持,与urllib及urllib2的关系不大。requests:requests库是一个基于urllib/3的第三方网络库,它的特点是功能强大,API优雅。由上图我们可以看到,对于http客户端python官方文档也推荐我们使用requests库,实际工作中requests库也是使用的比较多的库。

综上所述,我们选择选择requests库作为我们爬虫入门的起点。另外以上的这些库都是同步网络库,如果需要高并发请求的话可以使用异步网络库:aiohttp,这个后面猪哥也会为大家讲解。

二、requests介绍

希望大家永远记住:学任何一门语言,都不要忘记去看看官方文档。也许官方文档不是最好的入门教程,但绝对是最新、最全的教学文档!

1.首页

requests的官方文档(目前已支持中文)


从首页中让HTTP服务人类这几个字中我们便能看出,requests核心宗旨便是让用户使用方便,间接表达了他们设计优雅的理念。


注:PEP 20便是鼎鼎大名的Python之禅。

警告:非专业使用其他 HTTP 库会导致危险的副作用,包括:安全缺陷症、冗余代码症、重新发明轮子症、啃文档症、抑郁、头疼、甚至死亡。

2.功能特性

都说requests功能强大,那我们来看看requests到底有哪些功能特性吧:

Keep-Alive & 连接池国际化域名和 URL带持久 Cookie 的会话浏览器式的 SSL 认证自动内容解码基本/摘要式的身份认证优雅的 key/value Cookie自动解压Unicode 响应体HTTP(S) 代理支持文件分块上传流下载连接超时分块请求支持 .netrc

requests 完全满足今日 web 的需求。Requests 支持 Python 2.6—2.7以及3.3—3.7,而且能在 PyPy 下完美运行

三、安装requests

pip install requests

如果是pip3则使用

pip3 install requests

如果你使用anaconda则可以

conda install requests

如果你不想用命令行,可在pycharm中这样下载库


四、爬虫流程

下图是猪哥之前工作总结的一个项目开发流程,算是比较详细,在开发一个大型的项目真的需要这么详细,不然项目上线出故障或者修改需求都无法做项目复盘,到时候程序员就有可能背锅祭天。。。


言归正传,给大家看项目的开发流程是想引出爬虫爬取数据的流程:

确定需要爬取的网页浏览器检查数据来源(静态网页or动态加载)寻找加载数据url的参数规律(如分页)代码模拟请求爬取数据

起点中文网创建于2002年5月,是国内最大文学阅读与写作平台之一,是国内领先的原创文学门户网站,隶属于国内最大的数字内容综合平台——阅文集团旗下。

总体思路分为三步:

1.分析网页结构,利用xpath表达式爬取到所有的文章名字与链接,并按文章名字生成文件夹。

import requestsfrom urllib import requestfrom lxml import etreeimport osheader = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}class Spider(object): def start_request(self): url = 'https://www.qidian.com/all' req = request.Request(url,headers=header) html= request.urlopen(req).read().decode('utf-8') html=etree.HTML(html) bigtit_list=html.xpath('//div[@class="book-mid-info"]/h4/a/text()') ##爬取所有的文章名字 bigsrc_list = html.xpath('//div[@class="book-mid-info"]/h4/a/@href') print(bigtit_list) print(bigsrc_list) for bigtit,bigsrc in zip(bigtit_list,bigsrc_list): if os.path.exists(bigtit)==False: os.mkdir(bigtit) self.file_data(bigsrc,bigtit)

2.利用文章链接,爬取每个章节名字与链接

def file_data(self,bigsrc,bigtit): #详情页 url="http:" bigsrc req = request.Request(url, headers=header) html = request.urlopen(req).read().decode('utf-8') html = etree.HTML(html) print(html) Lit_tit_list = html.xpath('//ul[@class="cf"]/li/a/text()') #爬取每个章节名字 Lit_href_list = html.xpath('//ul[@class="cf"]/li/a/@href') #每个章节链接 for tit,src in zip(Lit_tit_list,Lit_href_list): self.finally_file(tit,src,bigtit)

3.利用每个章节的链接,生成带有章节名称的txt文件,并保存到每个文章文件夹下。

def finally_file(self,tit,src,bigtit): url = "http:" src req = request.Request(url, headers=header) html = request.urlopen(req).read().decode('utf-8') html = etree.HTML(html) text_list = html.xpath('//div[@class="read-content j_readContent"]/p/text()') text = "\n".join(text_list) file_name = bigtit "\\" tit ".txt" print("正在抓取文章:" file_name) with open(file_name, 'a', encoding="utf-8") as f: f.write(text)spider=Spider()spider.start_request()

成功!


生成的文件夹如下图:


  • 十大外汇储备排名(外汇储备是怎么来的)
  • 2024-09-28外汇储备是怎么来的外汇储备是目前老大哥最关切的问题,楼市在其面前都是可以弃车保帅的,其中原因很简单,中国是一个“两头在外”的加工贸易型国家,加之人口数量众多,每年需要消耗的能源、搞生产需要的原材料都需要用外汇进行采购,。
  • 专业养壶正确方法(谈养壶方法正确)
  • 2024-09-28谈养壶方法正确紫砂壶乃是茶具之首,泡茶最佳,不夺茶香味又无熟汤气,这也是许多人喜欢用紫砂壶的原因图文|砂海墨韵喜欢紫砂壶的同时也要「注意养壶」,一把好壶养出来温润端庄,自发黯雅之光,而不注意的话,或发贼光或将壶身养。
  • 海口迎来雾散天晴(海口的莲雾成熟了)
  • 2024-09-28海口的莲雾成熟了夏天的到来预示着水果的丰收,莲雾就是夏天最常见的水果之一,特别是在海南海口,海口大街小巷都种了莲雾树,当值莲雾成熟的季节,一不小心可能会淋到莲雾下的水果雨莲雾,又名洋蒲桃、紫蒲桃、水蒲桃、水石榴、天桃。
  • 船的组词(船读音及解释)
  • 2024-09-28船读音及解释“船”组词:杉船、轻船、牵船、汽船、绮船、马船、蹶船、龙船、泷船、买船、楼船、栏船、苦船、陆船、蛮船、木船、民船、碾船、炮船、跑船、邮船、罾船、玉船、愿船、征船、竹船、座船、转船、蛀船、装船、棹船、运。
  • 暗黑2风德生存能力(暗黑2重制版之迅疾如风)
  • 2024-09-28暗黑2重制版之迅疾如风说游戏,聊故事,大家好,我是小翎~说起暗黑2中最具特色的角色,那么小编认为一定是非沃德莫属那放浪不羁的外表,迈着六亲不认的步伐,以及长着一双需要玩家关怀的眼神,都在彰显着这个角色的超尘脱俗再加上最强者。
  • 地球黄金总价值(地球内核有0.4亿亿吨黄金)
  • 2024-09-28地球内核有0.4亿亿吨黄金科学家“听”到了财富产生的声音2017年,数千名天文学家共同见证了1.3亿光年外两颗中子星剧烈相撞,利用引力波探测设备捕捉到两个致密天体以1/3光速互怼通过计算,科学家认为这次撞击事件总共制造了50个。
  • 沉睡魔咒票房是多少(沉睡魔咒2登顶北美周末电影票房榜)
  • 2024-09-28沉睡魔咒2登顶北美周末电影票房榜新华社洛杉矶10月20日电(记者高山)迪士尼公司发行的奇幻片《沉睡魔咒2》本周上映后,以3天入账3600万美元登顶北美周末电影票房榜约阿希姆·伦宁执导、安吉丽娜·朱莉主演的《沉睡魔咒2》是2014年影。
  • 自己在家做葡萄罐头(馈赠亲朋的礼品)
  • 2024-09-28馈赠亲朋的礼品来源:环球时报【环球时报驻德国特约记者青木】中国是罐头食品的生产大国,但国人的罐头消费量却很低相比较,欧美人却一日三餐离不开罐头在他们眼中,罐头便宜、美味又营养尤其是疫情期间,他们对于罐头的抢购几乎到。
  • 高尔夫6代车机(一个兵用退伍费)
  • 2024-09-28一个兵用退伍费回想一下,你是什么时候赚到第一桶金?又是什么时候赚到自己的第一辆车?今天这位车主就用自己服兵役的退伍费,购买了人生中的第一辆车——第六代高尔夫:经典的高尔夫深深影响着我们这代人,其经典的外形还有小钢炮。
  • 许凯比肖战帅(网议迷人古剧大男主)
  • 2024-09-28网议迷人古剧大男主以往更流行大女主古装剧,也就是以女主为成长视角的电视剧,像是《甄嬛传》、《楚乔传》、《知否知否应是绿肥红瘦》、《如懿传》等等,不过这两年男频古装剧越来越盛行,尤其是张若昀主演的《庆余年》大获成功后,越。
  • 高铁改签最多可以改几次(高铁允许改签两次可行吗)
  • 2024-09-28高铁允许改签两次可行吗今年两会期间,全国政协委员、安徽省律师协会副会长周世虹提交了一份关于“高铁票价及退改签费用问题”的提案引起了网友热议,他建议允许高铁票改签两次,在春运及国庆、五一等重要节假日期间,则可通过提高退票、改。