14-6 综合实例Python程序设计基础教程(微课版第2版)_第1页
14-6 综合实例Python程序设计基础教程(微课版第2版)_第2页
14-6 综合实例Python程序设计基础教程(微课版第2版)_第3页
14-6 综合实例Python程序设计基础教程(微课版第2版)_第4页
14-6 综合实例Python程序设计基础教程(微课版第2版)_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

综合实例CHAPTER14给出2个网络爬虫的具体实例CONTENTS目

录01采集网页数据保存到文本文件02采集网页数据保存到MySQL数据库综合实例采集网页数据保存到文本文件访问古诗文网站

:/mingjus/综合实例综合实例爬取名句页面内容,保存到一个文本文件中爬取每个名句完整古诗页面,保存到一个文本文件找到诗句内容所在的位置,总结出共同的特征打开浏览器,访问要爬取的网页,查看网页源代码编写网络爬虫程序综合实例【例】

下面是编写网络爬虫程序具体实现代码01 #crawl_poem.py02 importrequests03 frombs4importBeautifulSoup04 importtime05 importjson06 07 #函数1:请求网页08 defpage_request(url,ua):09 #处理重定向后的URL10 response=requests.get(url,headers=ua,allow_redirects=True)11 html=response.content.decode('utf-8')12 returnhtml13综合实例14 #函数2:解析网页15 defpage_parse(html):16 soup=BeautifulSoup(html,'lxml')17 info=soup.select('div.sonsdiv.cont')18 sentence_list=[]19 href_list=[]20 21 foritemininfo:22 #提取诗句文本23 poem_text=item.find('a').get_text(strip=True)24 #提取出处25 source=item.select('a:nth-child(3)')26 iflen(source)==0:27 continue28 poem_source=source[0].get_text()29 【例】下面是编写网络爬虫程序具体实现代码综合实例

30 #组合信息31 poem_info=f"{poem_text}——{poem_source}"32 sentence_list.append(poem_info)33 34 #提取链接35 href=item.find('a')['href']36 #设置链接格式37 href_list.append(""+hrefifnothref.startswith('http')elsehref)38 return[href_list,sentence_list]39【例】下面是编写网络爬虫程序具体实现代码综合实例40 defsave_txt(info_list):41 withopen(r'sentence.txt','a',encoding='utf-8')astxt_file:42 forelementininfo_list[1]:43 txt_file.write(element+'\n\n')44综合实例45 #子网页处理函数:进入并解析子网页/请求子网页46 defsub_page_request(info_list):47 subpage_urls=info_list[0]48 ua={49 'User-Agent':'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/46.0.2490.86Safari/537.36'}50 sub_html=[]51 forurlinsubpage_urls:52 html=page_request(url,ua)53 sub_html.append(html)54 time.sleep(1)#添加延迟防止被封55 returnsub_html56 【例】下面是编写网络爬虫程序具体实现代码综合实例57 #子网页处理函数:解析子网页,爬取诗句内容58 defsub_page_parse(sub_html):59 poem_list=[]60 forhtmlinsub_html:61 soup=BeautifulSoup(html,'lxml')62 poem=soup.find('div',class_='contson')63 ifpoem:64 poem_list.append(poem.get_text().strip())65 returnpoem_list6667 #子网页处理函数:保存诗句到txt68 defsub_page_save(poem_list):69 withopen(r'poems.txt','a',encoding='utf-8')astxt_file:70 forelementinpoem_list:71 txt_file.write(element+'\n\n')72

【例】下面是编写网络爬虫程序具体实现代码综合实例73 if__name__=='__main__':74 print("**************开始爬取古诗文网站********************")75 ua={76 'User-Agent':'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/46.0.2490.86Safari/537.36'}77 poemCount=078 poem_list_all=[]#用于保存所有诗词79 80 #修改为使用重定向后的URL81 base_url='/mingjus/default.aspx?page=%d'82【例】下面是编写网络爬虫程序具体实现代码综合实例83 foriinrange(1,3):#一共爬取2页84 url=base_url%i85 print("正在爬取:",url)86 html=page_request(url,ua)87 info_list=page_parse(html)88 save_txt(info_list)89 #开始处理子网页90 print("开始解析第%d"%i+"页")【例】下面是编写网络爬虫程序具体实现代码综合实例91 #开始解析名句子网页92 sub_html=sub_page_request(info_list)93 poem_list=sub_page_parse(sub_html)94 poem_list_all.extend(poem_list)95 sub_page_save(poem_list)96 poemCount+=len(info_list[0])97 time.sleep(2)#添加延迟防止被封98 99 print("****************爬取完成***********************")100 print("共爬取%d"%poemCount+"个古诗词名句")101 print("共爬取%d"%len(poem_list_all)+"个古诗词")【例】下面是编写网络爬虫程序具体实现代码综合实例很多网站设计了反爬机制,会导致爬取网页失败采集网页数据保存到MySQL数据库综合实例<html><head><title>搜索指数</title></head><body><table><tr><td>排名</td><td>关键词</td><td>搜索指数</td></tr><tr><td>1</td><td>大数据</td><td>187767</td></tr><tr><td>2</td><td>云计算</td><td>178856</td></tr><tr><td>3</td><td>物联网</td><td>122376</td></tr></table></body></html>【例】采集一个本地网页文件web_demo.html,其记录不同关键词的搜索次数排名综合实例mysql>CREATEDATABASEwebdb;mysql>USEwebdb;mysql>createtablesearch_index(->idint,->keywordchar(20),->numberint);【例】执行如下SQL语句创建数据库和表在Windows系统中启动MySQL服务进程综合实例【例】

编写网络爬虫程序,读取网页内容进行解析,并把数据保存到MySQL数据库01#html_to_mysql.py02importrequests03frombs4importBeautifulSoup0405#读取本地HTML文件06defget_html():07path='C:/web_demo.html'08htmlfile=open(path,'r')09html=htmlfile.read()10returnhtml11综合实例12#解析HTML文件13defparse_html(html):14soup=BeautifulSoup(html,'html.parser')15all_tr=soup.find_all('tr')[1:]16all_tr_list=[]17info_list=[]【例】编写网络爬虫程序,读取网页内容进行解析,并把数据保存到MySQL数据库综合实例【例】编写网络爬虫程序,读取网页内容进行解析,并把数据保存到MySQL数据库18foriinrange(len(all_tr)):19all_tr_list.append(all_tr[i])20forelementinall_tr_list:21all_td=element.find_all('td')22all_td_list=[]23forjinrange(len(all_td)):24all_td_list.append(all_td[j].string)25info_list.append(all_td_list)26returninfo_list27综合实例28#保存数据库29defsave_mysql(info_list):30importpymysql.cursors31#连接数据库32connect=pymysql.Connect(33host='localhost',34port=3306,35user='root',#数据库用户名36passwd='123456',#密码37db='webdb',38charset='utf8'39)4041#获取游标42cursor=connect.cursor()4344

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论