《《数据采集技术(初级)》实验手册项目5:爬取网络数据.docx》由会员分享,可在线阅读,更多相关《《数据采集技术(初级)》实验手册项目5:爬取网络数据.docx(10页珍藏版)》请在第壹文秘上搜索。
1、任务1使用Requests库爬取小说网站任务描述本任务是使用Requests库爬取214玫瑰恋区所有章节的网址,之后再将小说中每章节的内容爬取下来,保存在本地,实现本任务的思路如下:(1)使用requests获取网页源代码。(2)使用正则表达式获取内容。(3)使用文件进行操作。任务步骤第一步打开小说网站,找到“214玫瑰恋区”小说的位置。如下图所示。第二步使用requests获取网页源码start_url=,http:/book38487defget_source(url):IlIffl获取网页源代码。:paramurl:网址:return:网页源代码html=requests.get(url
2、)returnhtml.content.decode(,gbk,)#这个网页需要使用gbk方式解码才能让中文正常显示第三步右键选择“查看网页源代码”,如下图所示。BreatheInEssentialOilsOPEN乖乖费尔作品集介:应叵()Ah*fflEW5211国明星李俊的成百Q手切二年出学生宁儿,国一次今外军碣结r.:5Aft向U子头忖扑的易世:育人说的是独生子.有人说也是遗谖.色育人诧他是“豪独子.但Wg(E)Ctd*R了JlW月有为CtfkS政11(E).CtruP飞生H鬼VS小魔女第二我被他瞪了M三W三如。9成中文(而体)差点儿没命第六宣大闹直除蔼七宣l*RKlftS5SCuuu好友
3、被多架明的联LsSrBlIi三IT5ST-第四步点击之后效果如下图所示。正文tr-Sttdwidth-m25%,Xairef-187730.html第二堂ref”187731.htmT籥三章tdwidth-*,25*wXaIref-187732.htm第四章ahref-,18773html。第五章ahref-18773html,第六章ahref=*18773html”第七章第八章ahref-18773html第九章第十章&bsp;4cnbsp:飞车ItilVS小魔女被他吻了有位帅哥宜取我a美里理身秀爰点儿没命大用医院/aX/td突来笠故他的后妈是我西好友被绑架特别的礼物由于网址存在于va标签中
4、,但va标签本身没有特殊的标识符来区分章节的链接和其他的普通链接,因此需要使用先抓大再抓小的技巧。构造正则表达式,先提取出包含每一章链接的一大块内容,再对这一大块内容使用正则表达式提取出网址。由于源代码中的网址使用的是相对路径,因此需要手动拼接为绝对路径,代码如卜丁A34353638394o414243444546484985152535455565758596o616263646566676869defget_toc(html):获取每一章链接,储存到一个列表中并返回。:paramhtml:目录页源代码:return:每章链接toc_url_list=toc_block=re.findall
5、(正文(.*?)Ihtml,re.S)0toc_url=re.findall(,href=(.*?),ttoc_block,re.S)forurlintoc_url:toc_url_list.append(start_url+url)returntoc_url_list第五步点击“第一章”,查看源码,如下图所示。tdheItht-alpyleftOccolor-WbFFFF?ftnbsp.ftnbs,ahrefhttps/HHi5M)-Mt.ahret-index.htacntabletablevdth三*880*border*。alit11三*center*cellpaddintdvdth*
6、880*heht*60*aln*center*b第一堂飞空贯戈VS小黄女fotablevdth*880*border*Oalin*center*CellpaddingHTcellspacntdwidth*30*he .6absp;6nbsp.tobsp.(1)急夕卜车祸tobn;tobsp:tobsp;&nbrp.“快崎,快点儿!祓摄到了秋可不欲你!”茂在林州美前面边跑边哪。fcnbsp.OnbSAftnbSAinbsp.“十号儿,观且不助7。哎峭!或期!不过,那小子那个生气的样子息是好笑。R林I育美在他后头气嘿吁吁一提到刚才fcnbsp.fcnbsp;tobsp.tobsp.“少庞话
7、,快点!Ji叫菅,迅速落下她好运fcnb=:5Up:5bsp:SbrP盘听到林美在我后头IftlihM亍馨儿,你这个没食心的!狼心狗修,忘恩负义,没U没义!inbsp.ftnbsp;fcnb$p:4nb$p.这就是我的死克一一#精美,小学同卓,现在的成EB中学初二四班学生,与独所在的一班隔一个弱金。fenb3p. ,&nbgp, ,我知道再听下去,她连电里爬外的话都骂得出来,又加快7脚步印隶宁譬儿可是成田中字扪二年级的长J8处跑;3军,连续刷新过学校记录!这个时体不施展本铺更待何时?搜索源代码中的vp标签和标签,发现它刚好有一对,正好包裹着正文。而正文中的Vbr/标签,则没有必
8、要用正则表达式来去除,直接使用字符串的replace。方法把其替换为空即可。代码如下:defget_article(html):获取每一章的正文并返回章节名和正文。:paramhtml:正文源代码:return:章节名,正文chapter_name=re.search(,size=n4n(.*?)*,htmlzre.S).group(1)textblock=re.search(,(.*?),html,re.S).group(1)text_block=text_block.replace(,)returnchapter_name,text_block第六步保存数据到本地,代码如下:efsave(
9、chapter,article):VlIVVl将每一章保存到本地。Jparamchapter:章节名,第X章:paramarticle:正文内容:return:NoneVlIVTlos.makedirs(,214玫瑰恋区,exist_ok=True)#如果没有“动物农场文件夹,就创建一个,如果有,则什么都不做“withopen(os.path.join(,214玫瑰恋区Ichapter+,.txt,),w,zencoding=,utf-8,)asf:f.write(article)defquery_article(url):VlIfVl根据正文网址获取正文源代码,并调用get_article函
10、数获得正文内容最后保存到本地。:paramurl:正文网址:return:NoneVlVVVlarticle_html=get_source(url)chapter_name,article_text=get_article(article_html)save(chapter_name,article_text)第七步编写主函数,代码如下:if_name_=,_main_,:toc_html=get_source(start_url)toc_list=get_toc(toc_html)pool=Pool(4)pool.map(query_article,toc_list)第八步programO214玫瑰恋区-C名称修改日期第八章礴身骋朝.txt2020/5/613:18第二章被他吻了txt2020/5/613:18第九堂好友祓绑架.txt2020/5/613:180第六章大闰医院.txt2020/5/613:18C第七章突来变故txt2020/5/613:18第三章有位帅哥喜欢我xt2020/5/613:18第十章特SI的礼物.txt2020/5/613:18L第四登美男裸身秀tt2020/5/61