临汾山东漯河饰品美体美文
投稿投诉
美文创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品
漯河衢州
兴义眉山
桂林阳泉
玉溪简阳
山东遂宁
永城新余
梧州洛阳
泸州温州
临汾清远
营口常熟
浙江大连
桐乡宜昌

Python爬虫获取电子书资源实战,值得一看

4月8日 望北海投稿
  最近在学习Python,相对java来说python简单易学、语法简单,工具丰富,开箱即用,适用面广做全栈开发那是极好的,对于小型应用的开发,虽然运行效率慢点,但开发效率极高。大大提高了咱们的生产力。为什么python能够在这几年火起来,自然有他的道理,当然也受益于这几年大数据和AI的火。
  据说网络上80的爬虫都是用python写的,不得不说python写爬虫真的是soeasy。基本上一个不太复杂的网站可以通过python用100多行代码就能实现你所需要的爬取。
  现在就以一个电子书的网站为例来实现python爬虫获取电子书资源。爬取整站的电子书资源,按目录保存到本地,并形成索引文件方便查找。
  爬取的目标网站:苦瓜书盘步骤:爬取分析、解析保存
  对于一个不需要登录验证的资源分享类的网站,爬取最大的工作量应该是在对目标页面的分析、解析、识别,这里用的到是Python的BeautifulSoup库。
  一、获取目录
  二、获取书籍列表页
  三、获取书籍详情页
  四、分析书籍详情页的资源地址
  五、下载并保存准备
  引入相应的包,设置headerd,和资源保存路径importrequestsimportosimportrefrombs4importBeautifulSoupimporttimeimportjsonfromBookimportBooksavepathJ:kgbookbooks保存地址headers{UserAgent:Mozilla5。0(MIntelMacOSX10114)AppleWebKit537。36(KHTML,likeGecko)Chrome52。0。2743。116Safari537。36}mainurlhttps:kgbook。combookcount0一、获取目录
  通过浏览器的调试工具可以看到目录在idcatagory的p标签下,下面还有ul和li标签,那我们可以迭代li可以获得目录及目录页的地址。
  可以通过soup。findall(attrs{‘id’:‘category’})〔0〕。ul获取到ul标签,然后获取ul的li标签,进行迭代获取。
  代码如下:获取目录defgetcategory():reqresultrequests。get(mainurl,headersheaders)ifreqresult。statuscode200:htmlstrreqresult。content。decode(utf8)soupBeautifulSoup(htmlstr,lxml)categoryssoup。findall(attrs{id:category})〔0〕。ulforliincategorys。findall(nameli):print(开始抓取li。a。attrs〔href〕li。string)getcategroydetail(mainurlli。a。attrs〔href〕,li。string)time。sleep(1)二、获取书籍列表页
  在书籍列表页,我们要获取两个信息,分别是书籍列表的信息及翻页下一页书籍列表的URL地址。
  通过浏览器的调试工具分别对列表的信息及翻页下一页的html进行分析。
  列表中的书籍详情页信息在classchannelitem的p标签下,通过classlisttitle的h3标签循环迭代
  下一页,我们可以直接通过nextpagsoup。find(name’a’,textre。compile(‘下一页’))来获取。
  然后我们可以通过递归来不断地调用获取下一页书籍列表页的代码,知道没有下一页为止。就可以把整个目录都可以爬取完。
  代码如下:获取书籍列表defgetbookslist(bookurlstr,categroypath):bookresultrequests。get(bookurlstr,headersheaders)bookhtmlstrbookresult。content。decode(utf8)soupBeautifulSoup(bookhtmlstr,lxml)booklistssoup。select(。channelitem)forbookinfopinbooklists:booktitlepbookinfop。select(。listtitle)〔0〕bookurlbooktitlep。a。attrs〔href〕getbookdetail(bookurl,categroypath)nextpagsoup。find(namea,textre。compile(下一页))ifnextpagisnotNone:nexturlnextpag。attrs〔href〕print(爬取下一页:nexturl)getbookslist(nexturl,categroypath)三、获取书籍详情页
  我们要在书籍详情页需要获得书籍详情信息包括书名、作者等信息
  关于书名和作者可以分别通过提取classnewstitle的h1标签和idnewsdetails的p下的ul下的li再通过正则表达式对作者信息进行提取。booktitlebookdetailsoup。select(。newstitle)〔0〕。text。strip()bookauthorbookdetailsoup。select(newsdetails)〔0〕。ul。li。find(textre。compile(作者:(。?)))。strip()bookauthorbookauthor。replace(作者:,)booktitleinfo《booktitle》bookauthor四、分析书籍详情页的资源地址
  在书籍详情页,我们还要分析书籍详情页的资源地址
  电子书的资源下载地址可以通过提取a标签的信息来获取。通过正则表达式分别匹配azw3、mobi、epub分别提取不同的电子书资源。
  bookurlitembookdetailsoup。find(name’a’,textre。compile(booktype,re。I))
  代码如下:根据书籍资源类型下载资源defgetbookfortype(bookurl,categroypath,bookdetailsoup,booktype):booktitlebookdetailsoup。select(。newstitle)〔0〕。text。strip()bookauthorbookdetailsoup。select(newsdetails)〔0〕。ul。li。find(textre。compile(作者:(。?)))。strip()bookauthorbookauthor。replace(作者:,)booktitleinfo《booktitle》bookauthorprint(书籍详情:booktitleinfo)bookurlitembookdetailsoup。find(namea,textre。compile(booktype,re。I))ifbookurlitemisnotNone:downloadurlbookurlitem。attrs〔href〕print(下载地址:downloadurl)ifcheckIfNoExistBookByUrl(downloadurl):rrequests。get(downloadurl)ifr。statuscode200:savepathcreatedir(categroypath,booktitleinfo)filenamebooktitle。booktypesavebook(r。content,savepath,filename)p,fos。path。split(categroypath)bookcategoryfbookBook(bookcategory,booktitle,bookauthor,bookurl,downloadurl,savepath,苦瓜书盘,booktype)print(book。toString())savebooktojson(book)else:print(下载失败:statuscodestr(r。statuscode))else:print(没有booktype格式的书)
  五、下载并保存
  有了资源的下载资源后下载就变得很简单了,主要用python的os库,对文件进行操作,包括建目录及保存资源文件。也可以通过连接数据库将爬取的数据保存到数据库。
  定义书籍类Book用于组织和保存数据。classBook(object):definit(self,bookcategory,bookname,bookauthor,bookurl,bookdownloadurl,booksavepath,booksource,booktype):self。bookcategorybookcategoryself。booknamebooknameself。bookauthorbookauthorself。bookurlbookurlself。bookdownloadurlbookdownloadurlself。booksavepathbooksavepathself。booksourcebooksourceself。booktypebooktypedeftoString(self):return{bookcategory:self。bookcategory,bookname:self。bookname,bookauthor:self。bookauthor,bookurl:self。bookurl,bookdownloadurl:self。bookdownloadurl,booksavepath:self。booksavepath,booksource:self。booksource,booktype:self。booktype}将获取的信息保存至文件defsavebooktojson(book):bookdata{booksource:book。booksource,booktype:book。booktype,bookcategory:book。bookcategory,bookname:book。bookname,bookauthor:book。bookauthor,bookurl:book。bookurl,bookdownloadurl:book。bookdownloadurl,booksavepath:book。booksavepath}bookjsonjson。dumps(bookdata,ensureasciiFalse)ensureasciiFalse就不会用ASCII编码,中文就可以正常显示了print(bookjson)withopen(data。json,a,encodinggbk)asfile:file。write(bookjson)根据目录创建文件夹defcreatedir(savepath,dir):pathos。path。join(savepath,dir)isExistsos。path。exists(path)ifisExists:print(已经存在dir)else:print(创建目录dir)os。mkdir(path)returnpath下载书籍资源defsavebook(content,savepath,savefilename):savefileos。path。join(savepath,savefilename)withopen(savefile,wb)ascode:code。write(content)
  运行效果如下:
  1、爬取过程
  2、爬取记录的json信息
  data。json的信息如下:
  3、爬取获取的资源
  按目录都已经整理好了,够你看的了。
投诉 评论

还在纠结给父母换什么手机?大内存超长续航,这三款可以选择还在纠结给父母换什么手机?大内存超长续航,这三款可以选择第一款:OPPOReno8Pro适合喜欢拍照的父母采用了一块6。7英寸居中挖孔屏幕,支持120Hz屏幕……京东0001号快递员入职13年,刘强东承诺干满5年送房,兑现不是每一个好员工都能遇到一个好老板。马云曾劝入职的员工:在30岁之前,追随一个好老板,比进入一家好公司更重要。作为京东的创始人,刘强东一向对员工非常好。许多网友还记得,当……万人迷利智一个藏在功夫皇帝李连杰背后的女人文白面书誏编辑白面书誏何鸿燊生前也有这么一句豪言:只要我想追的女人,没有一个是追不到手的。但唯独她,是一个例外。利智,一个藏在功夫皇帝李连杰背后的女人,……征途嘉年华十万大服今日上线顶级福利新区引爆巅峰南北大战兄弟姐妹齐相聚,共贺2022嘉年华!今日征途全系2022嘉年华盛典正式开启,《征途》嘉年华专属新区嘉年华十万大服17时同步上线,最丰厚的福利、最沸腾的大战将在新区引爆激情火焰,……大跌!劳力士江诗丹顿百达翡丽,但还是比股票保值手带劳力士,下马问前程曾经是无数江湖人士的标配。究其根本在于劳力士保值、易携带,且易折现。因此江湖儿女们往往手头阔绰时,带金劳,跑路时,卖出也有东山再起的本钱,再不济,保……超滤和反渗透膜净水器哪种更适合家庭用?不少朋友,都会考虑厨下净水器,厨下净水器一般分为两种:超滤、反渗透,它们都适合普通家庭,但区别很大。净水器的原理:吸附与拦截,超滤和反渗透的主要区别,是膜片的拦截精度不同……俄罗斯GDP与江苏省相当,全国1。46亿人,普通人一个月工资俄罗斯是中国的邻国,在我们的印象中俄罗斯的收入水平虽不高,但是福利却很健全,所以我们感觉俄罗斯人生活得很惬意。但是,俄罗斯经济长期徘徊不前,2021年GDP也只有1。78万亿美……拍手叫好!郭晶晶新职务曝光,全红婵受益,周继红没看错人说到郭晶晶、全红婵、周继红相信网友不陌生,郭晶晶被称为跳水女王、跳水皇后,一点不夸张地说郭晶晶的人气非常高,即使退役多年,每一次出现在大家的视线中,总能引起大家的关注。最近郭晶……夏至过后,中老年人要谨记吃3物,喝2水,补充营养身体棒昼晷已云极,宵漏自此长,转眼间夏至都已经过去,这也就意味着要迎来新一轮的暑热。而对于身体素质本就较为虚弱的中老年人来说,夏至过后更要注重身体的调养。为能够顺利度过酷暑,中……来详细聊聊游戏中的抄袭问题没有任何疑问抄袭者应该被钉在屈辱的十字架上受到惩罚时至今日,相信我们国内的玩家都已然受够了山寨游戏对于智商的侮辱,可谓忍无可忍。但另一方面,游戏中的借鉴行为是实打实……2399元起,小米新机Civi2你会购买吗?近日,小米正式发布了,主打自拍、轻薄的小米新机Civi2。该机一共有4款配色,分别是怦怦粉、冰冰蓝、朦朦黑、小白裙。从外观上来看,小米Civi2的风格,还是比较简约、大方,售价……Python爬虫获取电子书资源实战,值得一看最近在学习Python,相对java来说python简单易学、语法简单,工具丰富,开箱即用,适用面广做全栈开发那是极好的,对于小型应用的开发,虽然运行效率慢点,但开发效率极高。……
巴斯蒂安斯这就是德甲事关放假调休!国家发布最新通知!热搜第一!科学家首次在地球外确认生命之源存在3天2次,锡安70分15板7助,鹈鹕双杀太阳成功复仇,坐稳西辽篮猛料!郭艾伦认怂!杨鸣无米可炊弗格模范丈夫梅奥回CBA央视自制剧国家行动将袭,演员阵容太豪华,两次撤档难以理解真我GTNeo5全球首发240W快充!徐起闪充卷王人人都笑孔乙己,人人都是孔乙己日产中国11月销量遭遇腰斩这一大批知名网站APP,全都没熬过2022年苹果放弃N3工艺英特尔横插一脚,台积电被摆了一道?芯片之母EDA国产替代加速,合见工软立足验证,进军全流程微商大咖加粉思路:如何找客源引流精准人脉在我国离婚后怎样减少抚养费童年冀祥德:劳教制度废除后的立法模式选择国内油价调整时间确定,今天11月15日柴油92号95号汽油新私人定制经典台词塔里木油田物探人冬季施工掠影电梯礼仪及注意事项有哪些?美丽的沉思(一)小孩极度没有时间观念怎么办小孩极度没有时间观念如何解决从北门绕到东门,想维护一点男人的体面伊丽造句用伊丽造句大全

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找