2024数据采集与融合实践作业一

news/2024/10/23 1:53:07

码云链接:gitee码云

作业①:

1)、爬取学校排名实验:
o 要求:用requests和re库方法设计某个商城(自已选择)商品比价定向爬虫,爬取该商城,以关键词“书包”搜索页面的数据,爬取商品名称和价格。
o 输出信息

排名 学校名称 省市 学校类型 总分
1 清华大学 北京 综合 852.5
2......
代码
#爬取学校排名信息
import sqlite3
import requests
from bs4 import BeautifulSoup
url=r'http://www.shanghairanking.cn/rankings/bcur/2020'
req = None
try:req = requests.get(url)req.raise_for_status()req.encoding=req.apparent_encoding
except:print("error im request")data=req.text#解析数据
soup=BeautifulSoup(data,'lxml')
tbody_tag=soup.find('tbody')
school_tags=tbody_tag.find_all('tr')#使用sqlite存储数据
conn = sqlite3.connect('result1.db')
cursor = conn.cursor()
cursor.execute('''  
CREATE TABLE IF NOT EXISTS school (  rank INTEGER PRIMARY KEY,  name TEXT NOT NULL,city TEXT NOT NULL,type TEXT NOT NULL,  point DOUBLE NOT NULL  
)  
''')
for school_tag in school_tags:i=0for value_tag in school_tag.find_all('td'):if i==0:rank=value_tag.find('div').textif i==1:my_name=value_tag.find('span',attrs={'class':'name-cn'}).textif i==2:city=value_tag.textif i==3:type_school=value_tag.textif i==4:point=value_tag.texti+=1print(rank.strip(), my_name.strip(), city.strip(), type_school.strip(), point.strip(), sep='\t')cursor.execute("INSERT INTO school VALUES (?, ?, ?, ?, ?)", (rank.strip(), my_name.strip(), city.strip(), type_school.strip(), point.strip()))# 提交事务
conn.commit()
# 关闭游标和连接
cursor.close()
conn.close()

2)、心得体会

通过这个实验我初步练习了beatifulsoup的find_all功能,学会了request请求页面信息和解析页面信息

作业②:

1)

o 要求:用requests和re库方法设计某个商城(自已选择)商品比价定向爬虫,爬取该商城,以关键词“书包”搜索页面的数据,爬取商品名称和价格。
o 输出信息

序号 价格 商品名
1 65.00 xxx
2......
代码
#爬取商城价格信息import requests
import re
import sqlite3#使用sqlite存储数据
conn = sqlite3.connect('result1.db')
cursor = conn.cursor()
cursor.execute('''  
CREATE TABLE IF NOT EXISTS mail (  id INTEGER PRIMARY KEY, price DOUBLE NOT NULL ,name TEXT NOT NULL    
)  
''')#request获取网页数据
url=r'http://search.dangdang.com/?key=%CA%E9%B0%FC&act=input'
req = None
try:req = requests.get(url)req.raise_for_status()req.encoding=req.apparent_encoding
except:print("error im request")data=req.text
#获取商品信息部分数据(在<ul></ul>)里
match=re.search('''<ul class="bigimg cloth_shoplist" id="component_59">.*</ul''',data)
#start,end分别匹配每一件商品信息的开头和结尾(单件商品信息在<li></li>里)
data=data[match.start():match.end()]
start=re.search('<li',data)
end=re.search('</li',data)
i=0
while end!=None:#获取单件商品的信息my_datamy_data=data[start.end():end.start()]#获取商品的priceprice_sta_match=re.search('<span class="price_n">',my_data)price_end_match=re.search('</span>',my_data)price=my_data[price_sta_match.end()+5:price_end_match.start()]#获取商品nametitle_match=re.search('title="',my_data)ddclick_match=re.search('ddclick',my_data)name=my_data[title_match.end():ddclick_match.start()].strip()name=name[:-1]#输出编号,price,name并存进数据库print(i,price,name,sep='\t')cursor.execute("INSERT INTO mail VALUES (?, ?, ?)",(i, price, name))# 更新遍历的数据(data-my_data)data=data[end.end():]#找下一个商品信息start = re.search('<li', data)end = re.search('</li', data)i+=1# 提交事务
conn.commit()
# 关闭游标和连接
cursor.close()
conn.close()

2)心得体会

这个实验练习了re库和request的使用,其中我想使用更为简洁的表达式,但是总是不成功各种问题,只好使用比较笨的方法,分成两部分查找,正则表达式掌握的好感觉可以事半功倍,大大提高解析html文档的水平

作业③:

o 要求:爬取一个给定网页( https://news.fzu.edu.cn/yxfd.htm)或者自选网页的所有JPEG和JPG格式文件
o 输出信息:将自选网页内的所有JPEG和JPG文件保存在一个文件夹中
代码

#下载图片import requests
from bs4 import BeautifulSoup
import os.path as path
import re
import sqlite3#使用sqlite存储数据
conn = sqlite3.connect('result2.db')
cursor = conn.cursor()
cursor.execute('''  
DROP TABLE IF EXISTS pic
''')
cursor.execute('''  
CREATE TABLE IF NOT EXISTS pic (  id INTEGER PRIMARY KEY, url TEXT NOT NULL ,suffix TEXT NOT NULL,picture BLOB     
)  
''')#根据img_src把对应图片下载到C:\Users\supermejane\Desktop\爬虫实践\实践一\images文件夹
def downlord(url):global cntimg_path=path.join(my_path,str(cnt))index=re.search(r'\.(?=[^.]*$)',url).start()print(len(url),index)#ext为对应扩展名jpg,jpegext=url[index:]print(ext)req = requests.get(url)req.raise_for_status()data=req.contentwith open(img_path+ext,'wb') as file:file.write(data)print(str(cnt)+ext)cursor.execute("INSERT INTO pic VALUES (?, ?, ?, ?)",(cnt, url, ext, sqlite3.Binary(data)))cnt+=1if '__main__'==__name__:#获取给定网站html信息dataurl = r'https://news.fzu.edu.cn/yxfd.htm'req = Nonetry:req = requests.get(url)req.raise_for_status()req.encoding = req.apparent_encodingexcept:print("error im request")data = req.text#存储路径my_path和图片名cntmy_path = r'C:\Users\supermejane\Desktop\爬虫实践\实践一\images'cnt=0#提取img标签的src属性,并且下载soup = BeautifulSoup(data, 'lxml')img_tags = soup.find_all('img')for img_tag in img_tags:src = img_tag['src']print(r'https://news.fzu.edu.cn/'+src)downlord(r'https://news.fzu.edu.cn/'+src)# 提交事务conn.commit()# 关闭游标和连接cursor.close()conn.close()

2)心得体会

这个实验主要是练习了下下载二进制文件,req.content获得数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/72204.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

spring上 -基于注解配置bean,动态代理,AOP笔记

用的是jdk8,spring框架里jar包的下载可以自己搜到 注解用到的jar包。60,注解配置Bean快速入门 基本介绍 代码结构: UserDao.javapackage com.hspedu.spring.component;import org.springframework.stereotype.Repository;/* * 使用 @Repository 标识该类是一个Repository…

2024数据采集与融合技术实践第二次作业

这个作业属于哪个课程 <首页 - 2024数据采集与融合技术实践 - 福州大学 - 班级博客 - 博客园 (cnblogs.com)>这个作业要求在哪里 <作业2 - 作业 - 2024数据采集与融合技术实践 - 班级博客 - 博客园 (cnblogs.com)>学号 <102202126>一、作业内容 作业①要求:…

Proxmox VE 安装Mikrotik RouterOS

一、环境介绍 1、PVE版本:Proxmox Virtual Environment 7.2-3 2、ROS CHR镜像文件,Google Chrome 浏览器上访问Mikrotik官网下载,或访问云盘。 3、WinSCP、Xshell 用于上传镜像文件到PVE物理机。(请自行百度下载)Xshell下载地址WinSCP下载地址 二、PVE部署准备工作,上传R…

Educational Codeforces Round 170 (Rated for Div. 2) ABCD

Educational Codeforces Round 170 (Rated for Div. 2) ABCD来源:Educational Codeforces Round 170 (Rated for Div. 2) A. Two Screens 题意 给两个屏幕,两种操作,每种操作一秒,求让两个屏幕显示两个指定字符串的最短时间 操作:在一个屏幕的字符串后加任意一个字符 把一…

一个案例入门补环境

补环境其实是`补浏览器有而Node没有的环境,即补BOM和DOM的对象`,一切环境补的结果都是向浏览器实际结果靠齐,入门补环境只需要记住缺啥补啥这个技巧,当运行提示缺少某个环境,则直接在浏览器运行该环境是啥结果然后补上该结果。此分享只用于学习用途,不作商业用途,若有冒…

tcp

TCP/IP 协议与七层 ISO 模型的对应关系TCP/IP 和 ISO 的区别: OSI 参考模型注重“通信协议必要的功能是什么”,而 TCP/IP 则更强调“在计算机上实现协议应该开发哪种程序”。

基于Ascend C的Matmul算子性能优化最佳实践

本文将为开发者优化昇腾Cube类算子性能带来启发。本文分享自华为云社区《基于Ascend C的Matmul算子性能优化最佳实践》,作者:昇腾CANN。 矩阵乘法是深度学习计算中的基础操作,对于提升模型训练和推理速度至关重要。昇腾AI处理器是一款专门面向AI领域的AI加速器,其AI Core采…