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

网络数据采集实验报告

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

今日,ST海航摘帽了!但后续又会如何呢?今日,原ST海航成功摘帽,方老板也对广大股民和海航的员工兑现了诺言!撒花不久前方老板曾说过,会向国务院申请,就海航财务经营状况做特殊处理,以保证海航航空股票能在今年摘帽,否则这家上当下的救市政策与过去有什么不同?在老百姓刚经历了13年开启,1517年席卷全国的房价翻倍上涨的历程,内心建立起北上广深永远涨的理念后,这个理念就遭遇了疫情后房地产市场量价齐跌现实的迎头痛击。房子不好卖了,直接带来建艺集团遭自己人告了被指拖欠8000万每经记者曾剑每经编辑董兴生装修行业上市公司建艺集团(SZ002789,股价17。22元,市值27。49亿元)竟然被自己人给告了。9月28日晚间,建艺集团披露,自然人王子森作为原告,预测钢材到底还能涨多少今日看点基准价格走势原料市场动态部分市场调研期货市场分析重点市场消息一hr各品种今日基准价格走势二hr原料动态钢坯29日唐山钢坯库存总计42。25万吨,较昨减少0。38万吨,其中海红米百元机重出江湖普及5G手机而来9月29日消息,Redmi红米手机宣布,Redmi千元小金刚再添猛将,Note11R为普及5G手机疾速而来。简单说,小米推出了Note11R,虽然说定价千元,但随着双11到来,未来东莞最高峰银瓶山,爬山全程分享,惠州仲恺东莞谢岗镇时间20220927星期二地点惠州仲恺东莞谢岗镇,银瓶山。人物单人事情骑行爬山爬升高度1012m运动公里数61。59公里(骑行46公里,爬山15。59公里)全程总用时11小时49分八达岭长城要爬多久,需要几个小时?八达岭长城一日游攻略来北京真的不要来八达岭长城吗?八达岭长城巍峨雄壮,绵延不尽,登上长城极目远眺,万里长城犹如一条巨龙,飞舞在山岭间。如果能够亲眼见万里长城,感受身为华夏儿女的自豪,那种感觉太震撼了,易图通成为交通运输部首批智能交通先导应用试点项目服务商近日,公司旗下易图通通过中国交通运输部审批,成为首批智能交通先导应用试点项目(自动驾驶和智能航运方向)服务商,通过开展开放道路车路协同干线物流自动驾驶先导应用试点,形成技术指南以及挚研宏微光伏产业,从夹缝生存到扎根黄土高原富煤贫油这一能源储量特征,深深影响了我国发电产业的发展。近年来,碳中和成为国际环保领域的共识,光伏发电凭借其高效环保经济等特点,在动力源迭代中逐渐坐稳了位置,今天,对外市场屡遭黯淡吹爆这4条自驾游线路,我愿称它7天旅行天花板墙裂推荐,非常适合一周左右的国庆假期,线路信息基于原厂房车俱乐部及车主的实地考察,通行条件可能会发生改变,仅供参考。Route1甘肃内蒙环线途径点兰州,金昌,巴丹吉林镇,额济纳旗,潍坊动力一座盛产冠军企业的城市编者按潍坊国际风筝节和寿光蔬菜可谓是大名鼎鼎,但论及这座城市的工业实力,外界很多人并不清楚。事实上,潍坊拥有国家级制造业单项冠军企业17家,山东省级单项冠军则有123家。值得一提的
46岁大S生日秀恩爱!衣领大敞露胸口彩色纹身,亲吻老公还咬耳朵10月6日是大S46岁的生日,其工作室在个人社交平台连续发了三段视频,内容是大s九月底和老公具俊晔拍杂志大片时的幕后花絮,网友纷纷表示有被这波恩爱操作秀到。三段花絮对应两人不同的时我们为什么对教育这么焦虑?如果您有这样的疑问,特别建议您仔细读一下这篇文章。其实,教育孩子的王道,就是父母执着地栽培自己,让自己与孩子一起成长!01hr我们为什么对教育这么焦虑?大多数家长,对孩子对教育,缺因为网络延迟,我浪费了27天的生命整理朱珂欣出品CSDN程序人生(IDcoderlife)高速且通畅的网络,一直是每位互联网冲浪选手的刚需。对比10年前和现在冲浪的区别,除了从PC端转移到手机端带来的便捷,你是否觉人民币贬值不值钱了?利好利弊哪些行业?人民币最近连续贬值,近期突破7元大关,并冲击7。1,甚至7。2元上方,怎么办?老百姓口袋里的钱没有动,却从去年的6。3元,到现在的7。1元,也就是说去年用630元能买到的东西,今年祁连山下,石羊河旁,西营河水源远流长养育凉州儿女霍去病开辟河西走廊,而后命名河西四郡,其中以河西走廊东端的武威市彰显汉武帝大汉帝国的武功军威而得名,武威市,地处亚欧大陆桥的咽喉地位和西陇海兰新线经济带的中心地段,是中国旅游标志之(喜迎二十大)坚定不移走生态优先绿色发展之路西藏倾力描绘高质量发展多彩画卷新华社拉萨10月5日电题坚定不移走生态优先绿色发展之路西藏倾力描绘高质量发展多彩画卷新华社记者沈虹冰曹健范帆林芝市生态优美风景旖旎,素享西藏江南美誉。由市中心出发,驱车沿318国道哪怕这个世界上孤身一人,我也想好好热爱这个世界不知道你们有没有经历过过春节的时候,明明是一家人好不容易团圆的日子,可是家里却经常都是争吵声的日子不知道你们有没有想过一个人十几年一直活在争吵声的日子是怎么过来的一直以来,我总是活不论这个世界多么糟糕,你自己的世界一定要精彩1,2,没有可怕的深度,就没有美丽的水面。尼采3,4,一场无悔的沉醉,带着无法摆脱幻影的忧伤,叶儿坠落的叹息,揉进点点落红的心碎,流泻眼底的冷月秋风,静侯一份温暖,辗转在梦的召唤中这个世界上的万事万物唯有维持平衡,才是健康的这个世界上的万事万物唯有维持平衡,才是健康的我觉得现在好像吃什么都有危险,都有害,但有害能不能显现出来的关键,就是用法与用量是否正确,也就是说只要不超量就没事,只有合适的量才是最好小麦价格真疯狂,20家面粉企业同时涨价,收购价格1。605元农民老铁们大家好,今天是10月6日,这次的小麦价格可谓是一绝红尘,特别是山东单县飞翔面业,直涨大涨7厘,收购价格1。605元斤,破了1。6元斤的魔咒,山东潍坊香野面粉直接涨到了1。走读长沙老街镇丨铜官老街承古开今的文化桥梁来源华声在线走读长沙老街镇丨铜官老街承古开今的文化桥梁记者谢璐铜官,一座因火而生遇水而兴的千年陶都,世界釉下多彩的发源地,海上丝绸之路的重要起点,带领中国传统陶艺走向全球的巨航。如