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

网络数据采集实验报告

  一,实验目的
  网络爬虫系统的功能是下载网页数据,为搜索引擎系统或需要网络数据的企业提供数据来源。本章内容介绍了网络爬虫程序的编写方法,主要包括如何请求网页以及如何解析网页。在网页请求环节,需要注意的是,一些网站设置了反爬机制,会导致我们爬取网页失败。在网页解析环节,我们可以灵活运用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
  ……

夏朝大禹治水分九州,夏桀荒唐丢天子先把人物梳理一下,大禹,三过家门而不入的大禹。他的父亲叫鲧,因为治水不利,被尧杀死,尧把天子之位传给舜,舜把天子之位给了禹,禹因为治水有功而得天子之位。在梳理一下夏朝,夏朝是第一个人称李猫的李义府,得到武则天重用,卖官鬻狱贪财好色显庆元年,大理寺新关押了一个死囚,一个美丽绝伦的少数民族女子。李义府得知后,强令大理寺丞毕正义采取非法手段,将女囚释放,该女子出狱后便做了李义府的小妾。后来释放死囚的事被朝廷发觉,分封制下的祸患暗隐,从靖难之役看明初的政局现状如果您喜欢这篇作品,欢迎点击右上方关注。感谢您的鼓励与支持,希望能给您带来舒适的阅读体验。建文元年(1399年)燕王朱棣起兵造反,建文四年(1402年)朱棣率军攻入明都南京并即皇帝超400家企业参会!粤港澳大湾区将首次举办服务贸易大会文羊城晚报全媒体记者孙绮曼林心怡12月16日,广东省人民政府新闻办公室举行2022粤港澳大湾区服务贸易大会新闻发布会。记者从会上了解到,广东省商务厅联合珠海市人民政府香港商务及经济回顾经典那些不能遗忘的篮球鞋科比AdidasCrazy1AdidasCrazy1时间拉回到21世纪元年,2000年,但是我科还是身穿8号的爆炸头年轻小伙,还处在跟阿迪合作的蜜月期,阿迪推出了本次的主角AdidasCrazy1,被很多球迷顺其自然文刚哥原创题记大自然千变万化,但万变不离其宗。风雨雷电平常事,惯看春花秋月冬风四季轮回无始终,顺其自然看枯荣。人生冷暖平常事,日升月落雨雪风。2022年12月17日凌晨看淡一切我自再苦再难,从不向亲戚借钱的人,大多有以下特征文夏莫01卷首语亲情于人,就如同营养于种子,就如同阳光于向日葵,就如同火光于黑暗,在生命中成为了不可或缺的一部分。人从出生开始,就用一条脐带联络了亲情。亲情,是这世间,温暖的存在。心语新慰丨停止焦虑,从安静中汲取能量蓄势待发有时,去治愈常常,去帮助总是,去安慰这是百年前,一位医生的墓志铭。流传至今,依旧激励着一代又一代的医人。新华君虽不会诊病治疗,但也希望能通过自己小小的努力,给所有正在与病魔战斗的人现代诗仿徨的青春站在异乡的土地我渴望回到家乡回到家乡我又向往走向远方我总是如此的仿徨啊得到的不懂得珍惜失去后却追悔莫及当在远方时我是一只大雁时时刻刻都渴望南归,回到故土当在故乡时我是一只稚鹰每一次如果我们自己跑去和烂人纠缠不清,那不是伟大,是逆天1hr很多人到现在还没搞明白,以为我们放弃清零,只是因为病毒变异后传播能力更强了,其实如果我们继续闭关锁国,彻底杜绝和境外的交往,再变态的病毒我们也有能力防住,只要放弃经济,没有什抬起头!一叶有我们的华丽转身云衡微语散文当时间赶不风的节奏,当叶的凋零在四季的抖落,不再有怨言它的变换和尘埃。每一处的叶片讲述它的故事,每一场风在演绎它的歌舞,不是要让我们去怜悯,而是它们的出场需要我们去欣赏
迪拜最帅王子哈曼丹20架飞机却喜欢徒步,一夫多妻却独宠表妹命运给你一个比别人低的起点,是想告诉你,让你用你的一生去奋斗出一个绝地反击的故事,然而,有些人却不知道自己的起点在哪里?合抱之木,生于毫末,九层之台,起于垒土,当你懂得借力借势去奋我想对你说不能相见,也要配得上你的喜欢我想对你说今天是感恩节,我想对心底里的你说多谢,你要好好地照顾自己。1986年暑假,我该上初二,转到另一个城市上学。第一次被班主任带到教室,做自我介绍。被安排在第三排边上走廊的座位吴亦凡被判13年,罚没6亿,可是受害女性却一无所获吴亦凡强奸聚众淫乱案被判13年,追缴偷逃税及罚款等6亿,大家都说正义虽会迟到但不会不到,是的,坏人终于进去了,可是那些受害女性得到了什么呢?坏人不应该也赔偿这些人吗?也许有人说她们全新美学标杆荣耀80系列全新折叠旗舰荣耀MagicVs系列正式发布视频加载中点击看现场视频11月23日,荣耀80系列正式发布,全面升级荣耀数字系列美学基因,以科技创新助力年轻人自由自信表达。全新荣耀80系列提出美,出手成片的新品主张,通过AI影像兼创新科技和精湛工艺,华为PocketS受到很多女性用户的追捧与喜爱折叠屏手机用独特的形态与小巧的外形,给消费者带来了个性化体验。尤其是纵向折叠屏手机,小巧精致的外观受到了很多女性朋友和年轻人的青睐。今天给大家推荐一款折叠屏手机华为PocketS,吴亦凡聚众淫乱被判13年!一个月内侮辱三名女性,驱逐出境?这么年轻的小伙子到底是犯下什么样的滔天大罪,会得到这样的好处?据官方报道,北京朝阳法院在11月25日上午在法庭上审判吴亦凡,他的情节非常的严重,构成强奸罪行,而且还是聚众淫乱,并且何伟等悦己趋势下,小家电零售偏向女性消费者中新经纬11月25日电题悦己趋势下,小家电零售偏向女性消费者作者何伟中金公司研究部家电行业首席分析师魏儒镝中金公司研究部家电行业分析师卢璐中金公司研究部家电行业分析师在小家电赛道上科学家破解九层妖塔原型古墓基因密码,揭吐蕃源流史样本中的9个古代个体拥有与现代核心藏族人群尼泊尔古代个体相似的遗传成分,是目前为止发现带有相似遗传成分的古代基因组中,最东北缘的个体。研究人员对另外1例个体进行的遗传学分析发现,其女性应该如何保养?分析5个年龄段,让你健康又美丽为了保持女性健康,应该注意身体保健。身体护理做好了,疾病就不容易入侵了。在保养的过程中,要根据不同的年龄采取相应的保养措施,把握好重点。如果维护方法不合理,就会徒劳无功,浪费大量的世界杯第三天全国放假的沙特,不找借口的梅西,另类冷静的澳洲世界杯第三天,第一场就爆出特大冷门沙特21干掉阿根廷。我这个吃瓜群众在屏幕前开心不已,好歹也是咱们亚洲的难兄难弟嘛2002年世界杯倒数第二的国足全败0分,0进球,被灌进9球。嘿嘿,买手机最好一步到位,目前这4款手机非常优秀,用到2028年没问题现在想要买一部用的住的手机实在太简单了,目前手机性能过剩,有很多手机性能已经超出了我们日常生活使用,满足日常使用很简单,以下这4款手机性能优秀,用个三五年没有问题。1iPhone1