作业1
1)用requests和BeautifulSoup库方法定向爬取给定网址
import requests
from bs4 import BeautifulSoup
url = "http://www.shanghairanking.cn/rankings/bcur/2020"
try:
response = requests.get(url)
response.raise_for_status()
soup = BeautifulSoup(response.text, "html.parser")
header = ["排名", "学校名称", "省市", "学校类型", "总分"]
print("%-20s%-20s%-20s%-20s%-20s" % tuple(header))
rows = soup.select('tbody[data-v-4645600d] tr')
for row in rows:
cells = row.find_all('td')
rank = cells[0].text.strip()
name_cell = cells[1].find('a', class_='name-cn')
name = name_cell.text.strip() if name_cell else ""
city = cells[2].text.strip()
types = cells[3].text.strip()
score = cells[4].text.strip()
data = [rank, name, city, types, score]
print("%-20s%-20s%-20s%-20s%-20s" % tuple(data))
except Exception as e:
print(f"Error: {e}")
2)心得体会
在编写爬虫之前,必须先理解目标网页的HTML结构。这有助于确定如何有效地提取所需数据,在完成使用requests和BeautifulSoup库定向爬取给定网址数据的作业过程中,我深刻体会到了网络爬虫的复杂性和挑战性。从初步分析网页结构,到编写代码实现数据提取,再到处理可能出现的各种异常情况,每一步都需要细致的规划和灵活的应对策略。我学会了如何利用浏览器的开发者工具来洞察网页的HTML结构,这对于定位和提取所需数据至关重要
作业2
1) 用requests和re库方法设计某个商城(自已选择)商品比价定向爬虫,爬取该商城,以关键词“书包”搜索页面的数据,爬取商品名称和价格。
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)心得体会
在开始编写代码之前,我需要对目标商城的网站结构进行深入分析,了解其商品搜索和展示的方式。这包括了对商城搜索结果页面的HTML结构进行研究,以便确定如何有效地定位和提取商品名称和价格信息。使用了requests库来发送网络请求,获取搜索结果页面的内容。这个过程中,我学会了如何构造合适的HTTP请求头
作业3
1) 爬取一个给定网页( https://xcb.fzu.edu.cn/info/1071/4481.htm)或者自选网页的所有JPEG和JPG格式文件
import requests
from bs4 import BeautifulSoup
import os
url = "https://news.fzu.edu.cn/yxfd.htm"
# 发送 HTTP 请求获取网页内容
response = requests.get(url)
response.raise_for_status()
# 使用 BeautifulSoup 解析网页
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")
for img_tag in img_tags:
img_src = img_tag.get("src")
if img_src and (img_src.endswith(".jpg") or img_src.endswith(".jpeg")):
img_url = "https://news.fzu.edu.cn" + img_src # 拼接完整的图片 URL
img_filename = os.path.join(save_dir, os.path.basename(img_src)) # 构建保存路径和文件名
# 发送请求获取图片内容
img_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)心得体会
找到合适的地址和标题属性便可很简单的下载 最后保存到本地即可