作业①:
要求:用requests和BeautifulSoup库方法定向爬取给定网址(http://www.shanghairanking.cn/rankings/bcur/2020 )的数据,屏幕打印爬取的大学排名信息。
(1)大学排名实验
代码如下:
点击查看代码
from bs4 import BeautifulSoup
import urllib.request
list = []
u = []
v = []
html = urllib.request.urlopen(url="http://www.shanghairanking.cn/rankings/bcur/2020")
soup = BeautifulSoup(html, "html.parser")
tplt = "{0:^13}{1:^16}{2:^16}{3:^10}{4:^13}"
print(tplt.format("排名", "学校", "省市", "类型", "总分", chr(12288)))
for html1 in soup.find('tbody').children:
html2 = html1.find_all("td")
html3 = html1.find("a")
for i in range(len(html2)):
# html2=html2.text.replace(" ", "").replace("\n", "")
u.append(html2[i].text.replace(" ", "").replace("\n", ""))
v.append(html3.text.replace(" ", "").replace("\n", ""))
for i in range(len(v)):
j=6*i
print(tplt.format(u[j],v[i], u[j+2], u[j+3], u[j+4], chr(12288)))
运行结果如下:
(2)心得体会
在本次实验中由于我是用requests库时爬出来的内容是乱码,于是我使用了urllib.request库,在输出信息格式对齐上使用了format,但是还是没有完全对齐。
作业②:
要求:用requests和re库方法设计某个商城(自已选择)商品比价定向爬虫,爬取该商城,以关键词“书包”搜索页面的数据,爬取商品名称和价格。
(1)商品价格实验
代码如下:
点击查看代码
import re
import requests
url='https://origin-www.amazon.cn/s?k=%E4%B9%A6%E5%8C%85&__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&crid=35D2GNE0220JQ&sprefix=%E4%B9%A6%E5%8C%85%2Caps%2C155&ref=nb_sb_noss_1'
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',
'cookie': 'session-id=460-7549679-3839519; ubid-acbcn=459-1923661-0352533; x-acbcn="ABuFV3cBYim6ZPbxbm6SFSO2cHpuM8Gh6dIyf?pMwyil72WmONCryF3R54NWw4YU"; at-main=Atza|IwEBIMK795limGHFiJr0SNLxnz7t5PMMkzeHp2uUuQtVEjXrS2ynEw5UQ_Qa4-5AMorH27xYvplMqVpNYyt6MNHkRSQX1UX-DxK0PNm5uLUaSg869xj8hsD-NSPsTJUr1cdJEcI0NVkZ1Vi2rFdRiH6GxSjT7DsVeUz-SKfZGk_y8823a3KfrAN95rXT9lxVrKbfIprcgliT3t2kt8l0nulmuNbrsdNNFo_fOehUyWp6baXMpQ; sess-at-main="WYf0aW5uslSdeTBUG+zp1ZAfQ/2f2TtMoQP6cygKs08="; sst-main=Sst1|PQFGI0Gx3mfpfkSEftWYCbkjCZX9pPAXjJx8JO1kZhIyc0y3tyTZUPCXpuBmG5DQcYm0R8NpSXzxMeRuXrK_IC9gFbUYS69fa5hJeGo9IUYMpc5wGHk81LL1vNIe5H7slr6SP7_AplawdQsB9OAw8bK9_DVA158FkyUuyEz4Nj5Y8rXoqZwGmdpN4ib3omL706RUtg5VBtzrRlP4KFl3atUxV3GcNtSgaes0aa5VZHAaM6KaxMd08L3dvdFjcFUGqvz5ok_lhegnq1eihX7zmkbztdiBk3_A8Q0-BrRuLKE4Uf0; lc-acbcn=zh_CN; i18n-prefs=CNY; session-token=VCEwM2E9kQif+cwG6Z8/SMjTgNucZ5NYhXJgHAHxXckjULCdwmoO6EplFq8lZb5CToChy01K2cgfxe+vk20k7H63NMe5F0YiBSj8NHvtb3z3Ag2JhVClddxYZJqJgHkEMIEsG8s+LA/2uT7lkG0GoG8JdUHlEOoHK+YXxOdAKwW9C7zLG629lzljMOX0cIuVN+FS4w52rOpdNlDXpavn1jIbVNQ7pwA97HGoz5XEOB816pmcicHnbJcbq+e6hMoQsDQo+G6bojqK1U2CkT5CyPSATT/dFFQkM3Q37ykgIW8Zms+SA458fqV/yKtf/7VydJ47QnxTJLBtwSCPsYCjRINcEgRyRu2pUtrBThTWZbcX/StdAW4T+IxE2H0aXdZp; session-id-time=2082787201l; csm-hit=tb:C00GRDD18R1QE1BMMA01+s-CT7RWE5Q6BC52NG677NJ|1695640502398&t:1695640502398&adb:adblk_no'}
req = requests.get(url=url, headers=headers)
data = req.text
name =re.findall(r'<span class="a-size-base-plus a-color-base a-text-normal">(.*?)</span>',data)
price =re.findall(r'<span class="a-offscreen">¥(.*?)</span>',data)
tplt = "{0:^5}\t{1:^10}\t{2:^20}"
for i in range(len(name)):
print(tplt.format(i+1,price[i],name[i]))
运行结果如下:
(2)心得体会
在本次实验中要求了使用re库,我觉得正则表达式和bs4在读取信息上各有优劣,但我个人比较偏好使用bs4,觉得会更简单一点。
作业③:
要求:爬取一个给定网页( https://xcb.fzu.edu.cn/info/1071/4481.htm)或者自选网页的所有JPEG和JPG格式文件
输出信息:将自选网页内的所有JPEG和JPG文件保存在一个文件夹中
(1)保存图片实验
点击查看代码
import os
import urllib.request
import urllib.parse
import requests
from bs4 import BeautifulSoup
url='https://xcb.fzu.edu.cn/info/1071/4481.htm'
request = urllib.request.Request(url)
response = urllib.request.urlopen(request)
content = response.read().decode('utf-8')
soup = BeautifulSoup(content, 'lxml')
image = soup.select('p[class="vsbcontent_img"] img')
for i in image:
imgurl="https://xcb.fzu.edu.cn"+image[i].get("src")
path = 'pictures\\' + str(i+1) + '.jpeg' # 取文件后缀名并且拼接
with open(path, 'wb') as file:
response = requests.get(imgurl) # 发起GET请求下载图片
file.write(response.content) # 将请求返回的二进制内容写入文件
print(f'正在下载保存第{i + 1}张图片')-
运行结果如下:
将下载的图片保存在文件夹pictures里
在文件夹里查看图片
(2)心得体会
学会了保存图片到文件里,和新建文件夹。输出图片和其它的不是很一样,图片是先找到图片网址,再根据网址下载图片到本地查看。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了