数据采集作业1

news/2024/10/15 16:14:11

作业一

(1)实验内容

o 要求:用requests和BeautifulSoup库方法定向爬取给定网址(http://www.shanghairanking.cn/rankings/bcur/2020 )的数据,屏幕打印爬取的大学排名信息。
o 输出信息:
排名 学校名称 省市 学校类型 总分
1 清华大学 北京 综合 852.5
2 ......

代码如下:

import urllib.request
from bs4 import BeautifulSoup
if __name__ == "__main__":headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) ''AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.76'}url = "http://www.shanghairanking.cn/rankings/bcur/2020"req = urllib.request.Request(url, headers=headers)data = urllib.request.urlopen(req)data = data.read().decode()soup = BeautifulSoup(data, "lxml")fp = open("./程序设计.txt", "w", encoding='utf-8')fp.write("排名 学校名称 省市 学校类型 总分\n")body = soup.find("tbody")for i, row in enumerate(body.find_all('tr')):if i >= 24:  # 输出前24条breakrow_data=[]for td in row.find_all('td'):row_data.append(td.get_text(strip=True))print(row_data)fp.write(row_data[0]+" "+row_data[1][0:4]+" "+row_data[2]+" "+row_data[3]+" "+row_data[4]+ "\n")fp.close()print("任务完成")

结果如下:

(2)心得体会

遇到网页编码问题时,了解到需要正确识别网页的编码格式才能正确解析文本内容。通过查看响应头信息或者使用自动检测编码的库函数来解决编码不统一导致的乱码问题。这次实践不仅提升了自己的编程技能,尤其是在 Python 网络爬虫领域,还让自己对数据获取和处理有了更深入的理解。同时,也意识到在进行网络爬虫时需要遵守相关法律法规和道德规范,确保数据的合理使用。未来,还可以进一步探索如何对爬取到的数据进行存储、分析和可视化等操作,以发挥数据更大的价值。

作业二

(1)实验内容

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

代码如下:

import requests
import re
if __name__=="__main__":url="http://search.dangdang.com/?key=%CA%E9%B0%FC&act=input"headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.36'}response=requests.get(url=url,headers=headers).textex='<p class="name" name="title" ><a title="(.*?)"'ey='<span class="price_n">&yen;(.*?)</span>'ls1=re.findall(ex,response,re.S)ls2=re.findall(ey,response,re.S)print("序号 价格 商品名")for i in range(0,len(ls1)):print(str(i+1)+" "+str(ls2[i])+" "+ls1[i])

结果如下:

(2)心得体会

先用BeautifulSoup尝试了一下,挺轻松就做出来了,然后再改用re库,了解了re库search函数的用法。

作业三

(1)实验内容

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

代码如下:

import requests
from bs4 import BeautifulSoup
import os# 定义要爬取的网页地址
url = "https://news.fzu.edu.cn/yxfd.htm"# 发送 HTTP GET 请求获取网页内容,设置为响应对象 response
response = requests.get(url)
# 检查请求是否成功,若不成功则抛出异常
response.raise_for_status()# 使用 BeautifulSoup 解析网页内容,使用 html.parser 解析器
soup = BeautifulSoup(response.text, "html.parser")# 创建一个用于保存图片的目录,如果该目录不存在
save_dir = "images"
if not os.path.exists(save_dir):os.makedirs(save_dir)# 查找网页中所有的 <img> 标签
img_tags = soup.find_all("img")# 遍历找到的每个 <img> 标签
for img_tag in img_tags:# 获取 <img> 标签的 "src" 属性值,即图片的源地址img_src = img_tag.get("src")# 判断图片源地址是否存在且以 ".jpg" 或 ".jpeg" 结尾if img_src and (img_src.endswith(".jpg") or img_src.endswith(".jpeg")):# 将网页的基础地址与图片的相对地址拼接,得到完整的图片 URLimg_url = "https://news.fzu.edu.cn" + img_src# 构建完整的保存路径和文件名,使用 os.path.join 避免路径拼接错误img_filename = os.path.join(save_dir, os.path.basename(img_src))# 发送 HTTP GET 请求获取图片内容,设置为响应对象 img_responseimg_response = requests.get(img_url)# 检查图片请求是否成功,若不成功则抛出异常img_response.raise_for_status()# 以二进制写入模式打开文件,如果文件不存在则创建,存在则覆盖with open(img_filename, "wb") as img_file:# 将获取到的图片内容写入文件img_file.write(img_response.content)# 打印已下载的图片文件名,提示下载成功print(f"已下载: {img_filename}")

结果如下:

(2)心得体会

这题相对比较简单,只需要找到图片的下载网址,然后发起http请求,保存到本地即可

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

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

相关文章

如何制作精美ppt(1)

现阶段人工智能有生成式人工智能、大语言模型、和ChatGPT,这三者之间为层级关系,生成式人工智能包含文本生成、图像生成、音频生成、视频生成。 现阶段推荐可使用的软件有:海螺AI 文小言(百度) Kimi智能助手(写论文适用) 智谱清言 制作过程要当成一种交流 1 沟通:作为上…

luogu 模拟赛

A.带余除法 我们不难考虑找出 \(q\) 的上下界,不难发现范围是 \([\lfloor\frac{n}{k+1}\rfloor+1,\lfloor\frac{n}{k}\rfloor]\)。当然这个区间可能为空。只需算出区间长度即可。 B.奖牌排序 不难考虑到分别按照三个关键字排序,然后对于每个小朋友找到每个关键字下的排名(同…

vue+wangEditor编辑器,上传图片请求后台接口

来吧,先给大家看一下,是否是你想要的简单轻便编辑器的效果。父组件:<EditorView :content="value" @change="grtUrl"/><script> import EditorView from "@/components/EditorView"; export default {components: {EditorView}},…

汽车开发流程管理工具赋能安全与质量

经纬恒润能够提供Stages的咨询及工程服务能力,同时在ALM实施、ASPICE、功能安全、预期功能安全等有着丰富的咨询经验,帮助客户共同构建一个更高的安全标准和质量水平。 随着数字化、人工智能、自动化系统及物联网技术的迅速发展,工程驱动型企业正面临重大转型挑战,亟…

汽车电控 01

汽车电控1、车体 本身必要的电子设备 如 发动机,底盘,车身电子控制系统等。 2、车载 不是必要的电子设备 如 音响 空调 导航。车用传感器温度传感器压力传感器转速传感器爆震传感器流量传感器移位传感器气体浓度传感器

网络数据请求

测试可跳过域名校验

springboot 项目引入tk或者jpa 访问报错

今天弄新框架的时候,遇到个莫名其妙的问题,如下: springboot 项目引入tk 后 Caused by: java.lang.IllegalStateException: Failed to asynchronously initialize native EntityManagerFactory: java.lang.NoSuchMethodError: javax.persistence.ValidationMode javax.persi…

苹果电脑Mac数据恢复

一、使用内置工具恢复 Time Machine Time Machine是Mac自带的备份工具,可以定期备份整个系统或特定文件。如果已使用Time Machine备份了数据,那么恢复数据将非常简单。将备份硬盘连接到电脑上,然后打开Time Machine,选择需要恢复的文件或文件夹,再点击“恢复”即可。 2.iC…