python网络数据采集电子书(起点中文网越来越火爆了)
python网络数据采集电子书(起点中文网越来越火爆了)
2024-11-22 12:48:28  作者:坚强被吞噬  网址:https://m.xinb2b.cn/tech/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-11-22赤砂糖傻傻分不清如今,红糖已成为不少女性生活中不可缺少的调理品,尤其对于一些经期女性来说但是,很多人在购买红糖时发现,市场上很多红糖的配料表上写着的是“赤砂糖”,而非“红糖”那么,红糖和赤砂糖有什么区别?应该如何挑选。
  • 什么食物是养胃的(想不得胃病很简单)
  • 2024-11-22想不得胃病很简单林欣欣(化名),自从进入秋季后,也没有吃什么不干净的东西,一直动不动地就拉肚子,有时候在外面又不方便上厕所,搞得她难受死了便挑了个时间去了一趟医院,最终被诊断为急性肠胃炎,医生给开了一些药物调理,并叮。
  • 怎样做泡椒凤爪才好吃(泡椒凤爪你这么做)
  • 2024-11-22泡椒凤爪你这么做之前去超市买了泡椒刚好家里有点鸡爪就刚好做了个泡椒凤爪!酸辣酸辣的!简直是追剧必备啊!看着电视剧不知不觉就能吃一盘啊哈哈哈By大橙子饿了用料鸡爪20个萝卜2个小的泡淑及泡椒水140g小米辣适量盐4小勺。
  • 东京成田飞上海的航班:全日空北京-东京成田航线时隔两年多复飞
  • 2024-11-22东京成田飞上海的航班:全日空北京-东京成田航线时隔两年多复飞中文导报讯全日空航空公司(ANA)时隔约两年多后,于7月11日恢复了北京飞往东京的航班受到新冠疫情影响,全日空在过去两年零三个月停飞了北京飞往东京成田机场的客运航班;复航后,从北京飞往成田机场的单程航。
  • 羊绒可以自己水洗吗(羊绒清洗和晾晒时要注意什么)
  • 2024-11-22羊绒清洗和晾晒时要注意什么羊绒衫水洗后基本不缩水,而且羊毛衫则有缩水的现象下面介绍下羊绒清洗和晾晒的注意事项1.清洗:一般羊绒衫最好干洗,也可手洗把专用洗涤剂放入35℃水中搅匀,将已浸透的羊绒衫放入浸泡15~30分钟后,在重点。
  • 木耳猪肝汤的做法?(木耳猪肝汤的做法与步骤)
  • 2024-11-22木耳猪肝汤的做法与步骤食材:黑木耳五钱,猪肝六两,生姜一片,红枣两粒,盐少许先将黑木耳用清水透发,洗干净备用猪肝、生姜、红枣分别用水洗干净猪肝切片;生姜刮皮;红枣去核,备用加入适量清水于煲内,先用猛火煲至水滚,然后放入黑木。
  • 余心恬高清(氧气女孩余心恬变身血性女英雄)
  • 2024-11-22氧气女孩余心恬变身血性女英雄一向以“青春氧气女孩”形象亮相,突然变身成为“血性革命女英雄”,让众多观众和粉丝对杭州藉女星余心恬的转型刮目相看,并成为近期影视圈话题亮点近日,由吴樾自编自导自演,吴樾、余心恬领衔主演,谭凯、张岩、周。
  • pcb电路板前景(PCB板行业介绍)
  • 2024-11-22PCB板行业介绍本文所有内容均是产业研究和公司研究的案例,不构成任何投资建议,不构成任何投资推荐另外还有三点值得注意:1.短期价格波动几乎不可预测但巨大利益驱使下市场上会充斥神预测2.再好的生意,如果基本条件发生大的。
  • 杏鲍菇青椒土豆片的做法(快手小炒家常菜)
  • 2024-11-22快手小炒家常菜快手小炒家常菜,杏鲍菇炒土豆片,好吃有诀窍,分分钟能学会,简单易做,口感鲜香,营养美味,开胃又下饭,孩子最爱吃#春季美食大赛#作为菇类的一种,跟其他菌类相比,杏鲍菇做法简单,但却肉质肥厚、味道鲜美土豆。
  • tcl电视s11优缺点(客观测评TCLX11电视一哥TCL)
  • 2024-11-22客观测评TCLX11电视一哥TCL如果想要购买的电视不“踩坑”,大家都会选择买国内销量好的TCL,它作为中国电视行业的全球领跑者,无论是销量、质量,口碑,都是全球范围内的TOP级品牌根据(AVC)奥维睿沃的数据显示,TCL以2340万。
  • 浙a区域号牌要取消了吗(浙A区域号牌浙A的补丁)
  • 2024-11-22浙A区域号牌浙A的补丁汽车行驶在杭州西湖景区(新华社记者黄宗治/图)2021年1月初杭州的道路交通管理体系又推出了一个“大补丁”,这次的变化直接反映在汽车的“身份证”上——新增了“浙A区域号牌”这一政策的推出同时涉及了车辆。