学期:2021-2022学年第一学期

    学 院 大数据与智能工程学院 年 级、 专 业、 班 18级数据科学与大数据技术(专升本)一班 姓 名
    学号
    实验项目 名称 抓取学院网站的新闻内容的标题,发布时间

    实验学时: 3h 同组学生姓名: 王美琴、尤博欣、周青青、李昕辰 实验地点: 9317
    实验日期: 实验成绩: 批改教师: 批改时间:
    指导教师评阅:

    1. 实验目的:抓取学院网站的新闻内容的标题,发布时间
    2. 实验原理:requests请求、bs4网页解析
    3. 实验环境 :win11、python3.9、vscode、edge
    4. 实验步骤:
      1. Requests网页请求,获取网页源代码
      2. 使用bs4语法解析网页数据
      3. 返回学院网站的新闻内容的标题,发布时间等数据保存为txt文件

    核心代码:

    1. #http://www.tipdm.com/gsxw/index.jhtml
    2. import urllib.request
    3. from bs4 import BeautifulSoup
    4. dress = 'http://www.tipdm.com/gsxw/index.jhtml'
    5. contents = [["标题","时间","浏览量"]]
    6. for i in range(1,54):
    7. if i == 1 :
    8. str_dress = dress
    9. else:
    10. str_dress = dress[0:-6]+'_'+str(i)+dress[-6::]
    11. print(str_dress)
    12. response = urllib.request.urlopen(str_dress)
    13. data = response.read()
    14. soup = BeautifulSoup(data, "lxml")
    15. tags = soup.find_all("div", attrs={"class": "con"})
    16. for tag in tags:
    17. tag_a = tag.find("a")
    18. print(tag_a)
    19. d = tag_a["href"]
    20. response = urllib.request.urlopen(d)
    21. data = response.read()
    22. soup = BeautifulSoup(data, "lxml")
    23. content = []
    24. try:
    25. content.append(soup.find("h1").text.strip())
    26. except AttributeError:
    27. content.append("标题缺失!!!")
    28. try:
    29. content.append(soup.find("span", attrs={"class": "date"}).text.strip())
    30. except AttributeError:
    31. content.append("时间缺失!!!")
    32. try:
    33. content.append(soup.find("span", attrs={"class": "view"}).text.strip())
    34. except AttributeError:
    35. content.append("浏览量缺失!!!")
    36. contents.append(content)
    37. fo = open("A.txt","w")
    38. for content in contents:
    39. for i in content:
    40. fo.write(i+" ")
    41. fo.write("\r")
    42. fo.close()
    1. 实验结果及分析:

    通过requests库,并添加网页请求头,使用代理IP,请求网页url,得到网页数据源代码,并通过BeautifulSoup库使用bs4语法,进行数据整理提取,最后存入txt文件。

    1. 实验总结:

    在进行网页爬取时,网站会存在一些反爬机制,如:是否添加请求头、IP访问是否超出网站限制等,在进行网站爬取时,需要注意网站的反爬机制,并使用相对应的反反爬,最终得到数据。