首页 > 其他分享 >实验一

实验一

时间:2023-09-28 10:57:26浏览次数:43  
标签:20s% img url BeautifulSoup urllib 实验 data

作业一

(1)实验内容

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

代码如下:

import urllib.request
from bs4 import BeautifulSoup

url = r'http://www.shanghairanking.cn/rankings/bcur/2020'

resp = urllib.request.urlopen(url)
data = resp.read().decode()

soup = BeautifulSoup(data,"lxml")

tags = soup.select('tbody[data-v-4645600d] tr')

print("%-20s%-20s%-20s%-20s%-20s" % ('排名','学校名称','省市','学校类型','总分'))
for tag in tags:
    rank = tag.div.text.strip()
    name = tag.find(name='a',attrs={'class':'name-cn'}).text.strip()
    t = tag.find_all(name='td',attrs={'data-v-4645600d':''})
    city = t[2].text.strip()
    types = t[3].text.strip()
    score = t[4].text.strip()
    print("%-20s%-20s%-20s%-20s%-20s" % (rank,name,city,types,score))

结果如下:

(2)心得体会

第一次使用BeautifulSoup,了解并巩固了BeautifulSoup的基本用法,与re相比,BeautifulSoup更加容易上手。由于该网址的翻页不是通过改变url,暂时还不会实现翻页。

作业二

(1)实验内容

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

代码如下:

import urllib.request
import re

url=r'http://search.dangdang.com/?key=%CA%E9%B0%FC&act=input'

data = urllib.request.urlopen(url).read().decode('gbk')

s = '<span class="price_n">'
e = '</span>'
s1 = '<a title=.*?href'
print('%-10s%s' % ('价格','商品名称'))
m = re.search(s,data)
while m != None:
    data = data[m.end():]
    n = re.search(e,data)
    price = data[5:n.start()]
    m = re.search(s1,data)
    name = data[m.start()+9:m.end()-5]
    data = data[m.end():]
    m = re.search(s,data)
    print('%-10s%s' % (price,name))

结果如下:

(2)心得体会

先用BeautifulSoup尝试了一下,挺轻松就做出来了,然后再改用re库,但是因为还不熟悉re库,尝试了很久才做出来,了解了re库search函数的用法

作业三

(1)实验内容

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

代码如下:

from bs4 import BeautifulSoup
import urllib.request

url = r'https://xcb.fzu.edu.cn/info/1071/4481.htm'
data = urllib.request.urlopen(url).read().decode()
soup = BeautifulSoup(data,'lxml')
img_list = soup.select("p[class='vsbcontent_img'] img")

for img in img_list:
    url = img.attrs['src']
    img_url = 'https://xcb.fzu.edu.cn' + url
    img_data = urllib.request.urlopen(img_url).read()
    # 获取图像路径
    filename = url.split('?')[0]
    # 获取图像名称
    index = filename.rfind('/')
    filename = filename[index+1:]
    imgPath = './' + filename

    with open(imgPath, 'wb') as fp:
        fp.write(img_data)
        print(filename, '下载成功!!!')

结果如下:

(2)心得体会

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

标签:20s%,img,url,BeautifulSoup,urllib,实验,data
From: https://www.cnblogs.com/conanai/p/17735180.html

相关文章

  • 2023/9/25 进行实验
     结果为false,因为比较的是地址,而不是数,所以结果为false ......
  • 5. 串口接收数据——基于FPGA的串口发送数据实验
    1.串口接收原理与思路1.1基本原理采样:每位数据采多次,统计高低电平出现的次数,次数多的就是该位的电平值起始位检测:边沿检测,使用两个计数器来判断Bps_Clk的下降沿/上升沿(前一个时钟上升沿为高电平/低电平,后一个时钟上升沿为低电平/高电平),两个触发器即可设计得到。新语法:reg......
  • 拓扑图 题目要求 实验要求: 1、PC1\PC2\PC3\PC4采用DHCP自动获取IP地址,SW5作为服务
    拓扑图题目要求实验要求:1、PC1\PC2\PC3\PC4采用DHCP自动获取IP地址,SW5作为服务器,SW3和SW4作为中继创建地址池ippoolhuawei1和ippoolhuawei2,租期都为2天2、SW3与SW4做链路聚合,采用LACP模式。SW3作为主交换机,优先级为0抢占延时时间为10秒让G0/0/4接口成为非活跃链路,优先级为65000......
  • 线上AB实验效率提升,一些经验
    确定SOP(StandardOperatingProcedure)就是满足什么条件认为实验结果是置信的,满足什么条件可以推全,是除了大盘AB提升大于两倍AA波动以外的条件。这些条件可以是离线统计分析的结果,比如只看受策略影响的商品/商家的AB/AA指标表现。这些条件可以是T检验确认置信:对于同样的实......
  • LIS实验室(检验科)信息系统源码 C# +.Net+Oracle
    LIS实验室(检验科)信息系统,一体化设计,与其他系统无缝连接,全程化条码管理。集申请、采样、核收、计费、检验、审核、发布、质控、查询、耗材控制等检验科工作为一体的网络管理系统。技术细节:体系结构:Client/Server架构客户端:WPF+WindowsForms服务端:C#+.Net数据库:Oracle接口技术:RESTf......
  • 20 广域网技术PPP(Point to Point)协议/实验+理论
    广域网广域网是连接不同地区局域网的网络,通常所覆盖的范围从几十公里到几千公里。它能连接多个地区、城市和国家,或横跨几个洲提供远距离通信,形成国际性的远程网络。广域网和局域网的区别局域网是一种覆盖地理区域比较小的计算机网络。广域网是一种通过租用ISP网络或者自建......
  • 4. 使用串口发送5个数据到电脑——基于FPGA的串口发送数据实验
    1.使用串口发送5个数据到电脑对于变化的位数(原8)位进行的设计,5个数据即40位。UART规定发送的数据位只能是6、7、8。1.1设计思路对于12位的数据,发送两个字节,高四位变0即可。例如12'h123,按照8'h23和8'h01发送。两种可能出现的情况:1.空闲状态,还没有开始发送(上一次的发送已......
  • java实验代码
    一、这段代码展示了方法的重载(MethodOverloading)的概念。方法的重载是指在同一个类中可以定义多个具有相同名称但参数列表不同的方法。在这段代码中,有两个名为`square`的方法,一个接受整数参数,另一个接受双精度浮点数参数,它们的参数类型不同,这就是方法重载的体现。以下是代码的......
  • 软件定义网络实验一实验二报告
    实验一实验结果截图实验二实验结果截图总结在本次实验中,实验一较为简单,没有遇到较大的麻烦。但是实验二的操作过程中,因为不少细节问题,使得我在一些步骤反复操作了许多遍。在添加流表的输入代码环节,由于写代码时习惯性的打空格导致最后代码错误,找了很久才找出来错误。由......
  • 思科综合小实验
    创建一个拓扑配置思路在三层上配置VTP进行vlan的下发设置MLS实现vlan路由设置DHCP进行ip地址的下发,配置STP发生环路配置EIGRP,企业内网运行EIGRP,宣告精确到网络地址配置NAT,在R1上配置PAT配置PPP,R1和R2之间封装协议为PPP,使用CHAP双向认证,密码为love。配置OSPF,R2和R3和R4之间运行OSPF......