尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

102302122许志安作业3

102302122许志安作业3
📅 发布时间:2026/6/19 5:49:41

要求:指定一个网站,爬取这个网站中的所有的所有图片,例如中国气象网(http://www.weather.com.cn)。实现单线程和多线程的方式爬取。

代码如下:

import os
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
from concurrent.futures import ThreadPoolExecutorBASE_URL = "http://www.weather.com.cn"
SAVE_DIR = "images"
os.makedirs(SAVE_DIR, exist_ok=True)HEADERS = {"User-Agent": "Mozilla/5.0"}def get_image_urls(url):try:html = requests.get(url, headers=HEADERS, timeout=10).textsoup = BeautifulSoup(html, "html.parser")return [urljoin(url, img.get("src")) for img in soup.find_all("img") if img.get("src")]except Exception as e:print(f"[获取失败] {e}")return []def download(img_url):try:name = os.path.join(SAVE_DIR, os.path.basename(img_url.split("?")[0]))r = requests.get(img_url, headers=HEADERS, timeout=10)if r.ok and "image" in r.headers.get("Content-Type", ""):with open(name, "wb") as f: f.write(r.content)print(f"[下载成功] {img_url}")except Exception as e:print(f"[失败] {img_url} -> {e}")if __name__ == "__main__":imgs = get_image_urls(BASE_URL)print(f"共发现 {len(imgs)} 张图片:")for i in imgs: print(i)mode = input("\n选择下载方式:1.单线程  2.多线程 > ").strip()if mode == "1":for i in imgs: download(i)else:with ThreadPoolExecutor(10) as ex: ex.map(download, imgs)
结果:

spider代码如下:

import scrapy
import json
from sina_stock.items import SinaStockItemclass StockSpider(scrapy.Spider):name = "stock_spider"allowed_domains = ["vip.stock.finance.sina.com.cn"]start_urls = ["https://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeData?node=hs_a&page=1"]def parse(self, response):data = json.loads(response.text)for stock in data:item = SinaStockItem()item["bStockNo"] = stock.get("code")item["bName"] = stock.get("name")item["bPrice"] = stock.get("trade")item["bChangeRate"] = stock.get("changepercent")item["bChange"] = stock.get("pricechange")item["bVolume"] = stock.get("volume")item["bAmount"] = stock.get("amount")item["bAmplitude"] = stock.get("amplitude")item["bHigh"] = stock.get("high")item["bLow"] = stock.get("low")item["bOpen"] = stock.get("open")item["bPrevClose"] = stock.get("settlement")yield item# 翻页逻辑(抓取前 5 页)current_page = int(response.url.split("=")[-1])if current_page < 5:next_page = current_page + 1next_url = f"https://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeData?node=hs_a&page={next_page}"yield scrapy.Request(next_url, callback=self.parse)
结果:

spider代码如下:

# boc_rate/spiders/boc_spider.py
import scrapy
from boc_rate.items import BocRateItemclass BocSpider(scrapy.Spider):name = "boc_rate"allowed_domains = ["boc.cn"]start_urls = ["https://www.boc.cn/sourcedb/whpj/"]custom_settings = {'ROBOTSTXT_OBEY': False}def parse(self, response):rows = response.xpath('//table//tr')[1:]for row in rows:item = BocRateItem()item['货币名称'] = row.xpath('./td[1]/text()').get(default='').strip()item['现汇买入价'] = row.xpath('./td[2]/text()').get(default='').strip()item['现钞买入价'] = row.xpath('./td[3]/text()').get(default='').strip()item['现汇卖出价'] = row.xpath('./td[4]/text()').get(default='').strip()item['现钞卖出价'] = row.xpath('./td[5]/text()').get(default='').strip()item['中行折算价'] = row.xpath('./td[6]/text()').get(default='').strip()item['发布日期'] = row.xpath('./td[7]/text()').get(default='').strip()item['发布时间'] = row.xpath('./td[8]/text()').get(default='').strip()yield item
结果:

相关新闻

  • 读 《d2l:Chapter3. 线性神经网络 》随笔
  • iPadOS16有什么新功能
  • ipad linux

最新新闻

  • 宁波各区黄金回收测评 鄞州/海曙/江北变现哪家不压价 - 逸程
  • 2026深圳三大商圈黄金回收实测,逸程验金标准统一靠谱 - 逸程
  • K2.5技术解析:动态稀疏注意力与原生多模态架构
  • 2026杭州黄金回收避坑|认准商圈备案认证门店,杜绝虚高引流、到店压价 - 薛定谔的梨花猫
  • 石家庄黄金回收正规军在哪?2026实测门店星级榜,卖金前看一眼 - 奢侈品回收测评
  • 深度学习进阶(三十一)FlashAttention:IO 感知的精确注意力

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号