范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

网络数据采集实验报告

  一,实验目的
  网络爬虫系统的功能是下载网页数据,为搜索引擎系统或需要网络数据的企业提供数据来源。本章内容介绍了网络爬虫程序的编写方法,主要包括如何请求网页以及如何解析网页。在网页请求环节,需要注意的是,一些网站设置了反爬机制,会导致我们爬取网页失败。在网页解析环节,我们可以灵活运用BeautifulSoup提供的各种方法获取我们需要的数据。同时,为了减少程序开发工作量,可以选择包括Scrapy在内的一些网络爬虫开发框架编写网络网络爬虫程序。
  二,实验要求
  1.1 采集网页数据保存到文本文件
  访问古诗文网站(https://so.gushiwen.org/mingju/),会显示如图3-5所示的页面,里面包含了很多名句,点击某一个名句(比如"山有木兮木有枝,心悦君兮君不知"),就会出现完整的古诗(如图3-6所示)
  1.2 采集网页数据保存到MySQL数据库
  编写网络爬虫程序,读取网页内容进行解析,并把解析后的数据保存到MySQL数据库中,
  1.3 XPath语言
  了解Xpath的基本术语及语法
  三,实验步骤
  1.1 采集网页数据保存到文本文件
  下面编写网络爬虫程序,爬取名句页面的内容,保存到一个文本文件中,然后,再爬取每个名句的完整古诗页面,把完整古诗保存到一个文本文件中。可以打开一个浏览器,访问要爬取的网页,然后在浏览器中查看网页源代码,找到诗句内容所在的位置,总结出它们共同的特征,就可以将它们全部提取出来了。
  import requests
  from bs4 import BeautifulSoup
  import time
  #函数1:请求网页
  def page_request(url,ua):
  response = requests.get(url,headers = ua)
  html = response.content.decode("utf-8")
  return html
  #函数2:解析网页
  def page_parse(html):
  soup = BeautifulSoup(html,"html.parser")
  title = soup("title")
  sentence = soup.select("p.left > p.sons > p.cont > a:nth-of-type(1)")
  poet = soup.select("p.left > p.sons > p.cont > a:nth-of-type(2)")
  sentence_list=[]
  href_list=[]
  for i in range(len(sentence)):
  temp = sentence[i].get_text()+ "---"+poet[i].get_text()
  sentence_list.append(temp)
  href = sentence[i].get("href")
  href_list.append("https://so.gushiwen.org"+href)
  return [href_list,sentence_list]
  #函数3:写入文本文件
  def save_txt(info_list):
  import json
  with open(r"D:sentence.txt","a",encoding="utf-8") as txt_file:
  for element in info_list[1]:
  txt_file.write(json.dumps(element,ensure_ascii=False)+"  ")
  #子网页处理函数:进入并解析子网页/请求子网页
  def sub_page_request(info_list):
  subpage_urls = info_list[0]
  ua = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36"}
  sub_html = []
  for url in subpage_urls:
  html = page_request(url,ua)
  sub_html.append(html)
  return sub_html
  #子网页处理函数:解析子网页,爬取诗句内容
  def sub_page_parse(sub_html):
  poem_list=[]
  for html in sub_html:
  soup = BeautifulSoup(html,"html.parser")
  poem = soup.select("p.left > p.sons > p.cont > p.contson")
  poem = poem[0].get_text()
  poem_list.append(poem.strip())
  return poem_list
  #子网页处理函数:保存诗句到txt
  def sub_page_save(poem_list):
  import json
  with open(r"D:poems.txt","a",encoding="utf-8") as txt_file:
  for element in poem_list:
  txt_file.write(json.dumps(element,ensure_ascii=False)+"  ")
  if __name__ == "__main__":
  print("****************开始爬取古诗文网站******************")
  ua = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36"}
  for i in range(1,4):
  url = "https://so.gushiwen.org/mingju/default.aspx?p=%d&c=&t="%(i)
  time.sleep(1)
  html = page_request(url,ua)
  info_list = page_parse(html)
  save_txt(info_list)
  #处理子网页
  print("开始解析第%d"%(i)+"页")
  #开始解析名句子网页
  sub_html = sub_page_request(info_list)
  poem_list = sub_page_parse(sub_html)
  sub_page_save(poem_list)
  print("******************爬取完成*********************")
  print("共爬取%d"%(i*50)+"个古诗词名句,保存在如下路径:D:sentence.txt")
  print("共爬取%d"%(i*50)+"个古诗词,保存在如下路径:D:poem.txt")
  1.爬取1到9页的古诗
  2.在D盘新建poem.txt和sentence.txt
  3.如图爬取文件内容
  # html_to_
  mysql.py
  import requests
  from bs4 import BeautifulSoup
  from pymysql import connect
  # 读取本地HTML文件
  def get_html():
  path = "E:专业课数据采集与预处理day05webo_demo.html"
  htmlfile = open(path, "r+",encoding="utf-8")
  html = htmlfile.read()
  return html
  def parse_html(html):
  soup = BeautifulSoup(html,"html.parser")
  all_tr=soup.find_all("tr")[1:]
  all_tr_list = []
  info_list = []
  for i in range(len(all_tr)):
  all_tr_list.append(all_tr[i])
  for element in all_tr_list:
  all_td=element.find_all("td")
  all_td_list = []
  for j in range(len(all_td)):
  all_td_list.append(all_td[j].string)
  info_list.append(all_td_list)
  return info_list
  # 保存数据库
  def save_mysql(info_list):
  import pymysql.cursors
  # 连接数据库
  connect = pymysql.Connect(
  host="localhost",
  port=3306,
  user="root", # 数据库用户名
  passwd="Lcj171011", # 密码
  db="webab",
  charset="utf8"
  )
  # 获取游标
  cursor = connect.cursor()
  for item in info_list:
  id = int(item[0])
  keyword = item[1]
  number = int(item[2])
  sql = "INSERT INTO search_index(id,keyword,number) VALUES ("%d", "%s", %d)"
  data = (id, keyword, number)
  cursor.execute(sql % data)
  connect.commit()
  print("成功插入数据")
  # 关闭数据库连接
  connect.close()
  if __name__ =="__main__":
  html = get_html()
  info_list = parse_html(html)
  save_mysql(info_list)
  1.2 采集网页数据保存到MySQL数据库
  由于很多网站设计了反爬机制,会导致爬取网页失败,因此,这里直接采集一个本地网页文件web_demo.html,它记录了不同关键词的搜索次数排名,其内容如下:
  import requests
  from bs4 import BeautifulSoup
  from pymysql import connect
  # 读取本地HTML文件
  def get_html():
  path = "E:专业课数据采集与预处理day05webo_demo.html"
  htmlfile = open(path, "r+",encoding="utf-8")
  html = htmlfile.read()
  return html
  def parse_html(html):
  soup = BeautifulSoup(html,"html.parser")
  all_tr=soup.find_all("tr")[1:]
  all_tr_list = []
  info_list = []
  for i in range(len(all_tr)):
  all_tr_list.append(all_tr[i])
  for element in all_tr_list:
  all_td=element.find_all("td")
  all_td_list = []
  for j in range(len(all_td)):
  all_td_list.append(all_td[j].string)
  info_list.append(all_td_list)
  return info_list
  # 保存数据库
  def save_mysql(info_list):
  import pymysql.cursors
  # 连接数据库
  connect = pymysql.Connect(
  host="localhost",
  port=3306,
  user="root", # 数据库用户名
  passwd="Lcj171011", # 密码
  db="webab",
  charset="utf8"
  )
  # 获取游标
  cursor = connect.cursor()
  for item in info_list:
  id = int(item[0])
  keyword = item[1]
  number = int(item[2])
  sql = "INSERT INTO search_index(id,keyword,number) VALUES ("%d", "%s", %d)"
  data = (id, keyword, number)
  cursor.execute(sql % data)
  connect.commit()
  print("成功插入数据")
  # 关闭数据库连接
  connect.close()
  if __name__ =="__main__":
  html = get_html()
  info_list = parse_html(html)
  save_mysql(info_list)
  1.3 XPath语言
  XML文档通常可以被看作一棵节点树。在XML中,有元素、属性、文本、命名空间、处理指令、注释以及文档节点等七种类型的节点,其中,元素节点是最常用的节点。下面是一个HTML文档中的代码:
  html_text = """
  BigData Software
  BigData Software
  There are three famous bigdata software;and their names are
  Hadoop,
  Sparkand
  ;
  and they are widely used in real application.
  others
  ……

绿水青山新钱景浙江村民家门口眺望诗和远方施金生(左一)正给动物喂食姚玲利摄摄中新网湖州10月11日电(施紫楠姚玲利)每天7点半,施金生来到动物园做的第一件事,就是去动物检疫场转一圈,看看动物的健康面貌,再去袋鼠的馆舍打扫昆区青山东河九原稀土高新区最新通告昆都仑区新型冠状病毒感染肺炎防控工作指挥部通告(2022年第135号)2022年10月8日,昆都仑区在集中隔离场所应检尽检第四轮重点区域核酸检测人员中发现5名阳性人员。我区迅速采取金牌月子餐不用请月嫂,营养师分享7天食谱,营养好吃产奶足生宝宝让人体消耗巨大,坐月子对产妇来说正是调养的好时机。月子坐得好,身体能恢复得更快,反之则容易落下病根,体质更不如前。月子餐是坐月子期间的重要一环,科学饮食充足营养能为机体的恢复经营场所无法联系,深圳每日优鲜被列入经营异常名录新京报讯(记者张洁)10月13日,新京报记者从天眼查获悉,深圳每日优鲜电子商务有限公司因通过登记的住所或者经营场所无法联系,被深圳市市场和质量监督管理委员会南山局列入经营异常名录。外媒美芯的寒冬开始来了在美国对华为等中企实施芯片禁令之初,比尔盖茨就曾劝告这么做适得其反,非但无法遏制中国高科技的发展,反而还会让以出口为主的美半导体市场遭到反噬,造成不可估量的损失。但杀红眼的老美显然自己动手,丰衣足食记录生活,炼猪油。人生有很多第一次,每一个第一次对于我们来说都是一次成长,一次历练,一次蜕变。婚前只用管好自己,其他什么都不用操心,还是父母心里的小孩,结婚后,有了孩子,虽然还是父事不三思终有悔,人能百忍则无忧老人言,句句在理,受益一生1娶妻不娶打牌女,嫁人不嫁钓鱼男2亲戚再近少往来,朋友再好不共财3君子之交淡如水,酒肉朋友莫当真4饿死不打亲戚工,穷死不耕丈人田5不怕马王三只眼,就怕人怀海克斯科技引质疑,我们对食品添加剂是否过度焦虑了?相信大家都被最近的海克斯科技刷屏了,究竟什么是海克斯科技呢?海克斯科技的出现对于我们的生活又有什么影响?海克斯科技是什么?这个出自游戏英雄联盟的词语,特指一种魔法和科技融合的顶尖技命里的情人,皆是有定数的人生在世命也运也布大道于天下施善念于人心虽无修行身亦是修行人洞明修行苦方开修行门众生之相诗人舒婷在她的现代诗致橡树里这样写道!我如果爱你绝不像攀援的凌霄花,借你的高枝炫耀自己我如果阿基米德名场面新研究证实适度分心更能激发灵感说到灵光一闪,许多人脑海中浮现的,可能是阿基米德在泡澡时联想到的浮力等于排水重量。而近日发表于美学创造力和艺术心理学杂志上的一篇文章,就很好地解释了人们为何容易在浴室里放松时发散思这样的人,非常容易得罪人!看看你是不是在中国社会,一般是先说先死。曾仕强每日箴言全文共2100字,深度阅读需6分钟,受益终生在人际交往中,有一种人总是让人又爱又恨,那就是心直口快的人。所谓,最坦诚也最傻,往往说的正是心
三四线城市二手楼市开始触底反弹?鹤岗线上找房热度升近十倍女子离开大城市去鹤岗全款1。5万买房90后男生全款4万买房移居鹤岗10月以来,黑龙江省鹤岗再次因为房价便宜冲上热搜。其线上找房热度,也此由提升近10倍。根据58同城安居客近日发布的恭喜林书豪!合同转正,留在广州队林书豪发视频回应被裁传闻第一阶段打完了,我们正要回广州,我们这9场比赛学了很多,队友表现都很好,很多球迷一直在鼓励我,我非常感谢,我会一直做好自己,认真训练准备自己,我非常珍惜每一斑斓如画山野潮玩野奢酒店赏秋旅行宝藏地不容错过记者程凌润通讯员王红娟瀑布成群溪流交错漫山红遍层林尽染11月的九如山,各种红叶树种形态各异,色彩斑斓。三十六平方公里的连绵群山,峰峦叠嶂峡谷纵横瀑布奔腾溪流潺潺,这些美景被十公里的海南白沙绿茶,生长在70万年前陨石坑里的绿茶世界上很多的陨石坑,陨石坑的形成历史悠久,但是可能很多人还不知道在海南居然还藏着一个陨石坑白沙陨石坑。白沙陨石坑是中国发现的第一个陨石坑,是我国能认定的唯一较年轻的陨石坑,也是世界越南有一条街深受游客喜爱,夜晚这是暧昧的天堂,情人的世界在越南旅行,一定要去一趟情人街,这条街道堪称单身游客的爱美天堂。(此处已添加小程序,请到今日头条客户端查看)众所周知,越南除了拥有丰富的旅游资源之外,还有开放自由的夜生活。早期越南海口房价三连跌,海口楼市的神话被打破了,海口楼市分析第53期现在海口房价也不行了,自从海口楼市的那几个利好消息被耗尽以后,现在的海口楼市已经和之前的不一样了。之前海口房价能上涨,主要靠的是海口的新房供应量比较少,再加上海口受到海南自贸港的利商务部推动黄河流域扩大东西双向开放黄河流域9省(区)横跨我国东中西部,兼具沿海内陆沿边等区位特点,特色优势产业体系建设正在加快推进,对外开放潜力巨大,提升国际贸易便利化水平有基础有条件。11月6日举行的黄河流域国际黄河水黄也清凉,渔家傲气毛尖茶黄河水黄也清凉,渔家傲气毛尖茶。头戴抖笠抛钓乐,山川蒙笼白鹭飞。老猫酣睡梦太虚,三心二意鱼满筐。花果山中美猴王,胡吃海喝蟠桃宴。江湖风云雨潇潇,数只白鹭云端飞。醉酒千盅畅淋漓,莫管实拍剑阁乡下,竹林旁的土墙房子,它还是四合院,一起来看看秋日生活打卡季爱旅游,爱生活。旅游可以放松自己的心情,宽阔自己的心境,你有好久没来一场说走就走的旅行,忘掉不顺心,迎接新的幸福旅程。我是元元,每天分享最新的旅游资讯。秋天有美丽的风海拔3500多米的高原上,人们这样守护黄河之肾这是玛曲县阿万仓湿地秋景(无人机照片)。新华社记者陈斌摄新华社兰州11月4日电深秋,从空中俯瞰平均海拔3500多米的玛曲湿地,大大小小的湖泊如珍珠般洒落在草原上,上万只候鸟在这里安12小时跟车全纪录体验中国重汽黄河X7的科技与狠活前不久,卡车e族沈阳记者站的几名记者来了一次说走就走的旅行,正是这趟不寻常的旅行让记者们大呼原来全车都是科技与狠活的重卡竟是这样一个恐怖如斯。不期而遇地跟车不可能完成的任务这趟说走