课程:《Python程序设计》
班级:2113
姓名:魏子俊
学号:20211305
实验教师:王志强
实验日期:2022年5月28日
必修/选修:公选课
Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。
课代表和各小组负责人收集作业(源代码、视频、综合实践报告)
注:在华为ECS服务器(OpenOuler系统)和物理机(Windows/Linux系统)上使用VIM、PDB、IDLE、Pycharm等工具编程实现。
批阅:注意本次实验不算做实验总分,前三个实验每个实验10分,累计30分。本次实践算入综合实践,打分为25分。
评分标准:
(1)程序能运行,功能丰富。(需求提交源代码,并建议录制程序运行的视频)10分
(2)综合实践报告,要体现实验分析、设计、实现过程、结果等信息,格式规范,逻辑清晰,结构合理。10分。
(3)在实践报告中,需要对全课进行总结,并写课程感想体会、意见和建议等。5分
(4)如果没有使用华为云服务(ECS或者MindSpore均可),本次实践扣10分。
注意:每个人的实验不能重复,课代表先统计大家做的内容并汇总,有重复的需要自行协商。
爬虫爬取百度热搜榜内容,存入文件,并制作成可视化二维码,通过手机扫描二维码,可以获取百度热搜内容。
爬虫爬取百度热搜榜.py
import requests from bs4 import BeautifulSoup from datetime import datetime headers = { 'User-Agent':"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 " "Safari/537.36 SLBrowser/7.0.0.12151 SLBChan/103" } response = requests.get("https://www.baidu.com/", headers=headers) features="html.parser" bsObj = BeautifulSoup(response.text) resDate = response.headers.get('Date') print(resDate) nameList = bsObj.findAll("li", {"class": {"hotsearch-item odd", "hotsearch-item even"}}) tests = [] for name in nameList: tests.append(name.getText()) tests.sort() with open('1.txt','w',encoding='utf-8') as f: for news in tests: news = news[0:1] + " " + news[1:] print(news) f.write(news+'\n')
1.txt文件内容
import qrcode with open('1.txt','r',encoding='utf-8') as f: list =[] for i in f: i = i.split("热")[0] i = i.split("\ue62e ")[-1] i = i.strip("\n") list.append(i) print(list) a=list[0] b=list[1] c=list[2] d = list[3] e = list[4] f=list[5] qr = qrcode.QRCode() qr.add_data(a+'\n') qr.add_data(b+'\n') qr.add_data(c+'\n') qr.add_data(d+'\n') qr.add_data(e+'\n') qr.add_data(f+'\n') img = qr.make_image() img.save("some_file.png")
1.首先在python中下好requests库、bs4库和datetime库
2.headers为请求头,我在百度首页上找到了我的机器的用户代理,使网站服务器可以识别我的机器的操作系统版本、CPU版本、浏览器版本等信息。使用requests模块的方法向目标url发送携带请求头的请求,调用bs4模块解析html源码,调用datetime库获取response.headers的时间。
3.找到热搜榜的类,并添加热搜榜的内容,创建列表并将列表排序存入1.txt文件中。
4.调用qrcode库,由于qr.add_data()函数不能直接提取文件中的信息,将文件中的信息以列表的形式提取出来,并去掉前后的没用的编码字符。将每一个元素设置为一个变量存入二维码中在其后加上换行符,生成二维码,“0”代表置顶信息。
5.通过手机扫描二维码会得到相应百度热搜的信息。
在华为云上运行代码
通过本次实践上网学习了爬虫的相关知识,大致了解了爬虫的相关信息,并可以爬取一些网站信息,在这次实践过程中也出现了许多问题。