当前位置: 首页 > news >正文

Python+Scrapy跨境电商爬虫实战:从亚马逊/沃尔玛数据采集到反爬攻克(附Pangolin API高效方案)

从零实战到反爬攻克,揭秘跨境数据抓取全流程与Pangolin Scrape API终极方案

在当今数据驱动的跨境电商时代,谁掌握了优质的市场数据,谁就掌握了成功的关键。随着全球电商市场规模持续扩大(据Statista最新报告显示,2025年全球电商交易额预计突破7万亿美元),数据已然成为跨境卖家的核心竞争资源。亚马逊、沃尔玛等主流平台上的价格趋势、商品评论、竞品策略和用户行为数据,正是卖家们赖以生存的战略情报。

本文旨在引导读者如何在合法合规的前提下,高效获取电商平台的关键数据,从而为选品、定价和市场分析提供数据支撑。我们将详细揭示技术难点,并提供切实可行的解决方案,让数据采集不再成为跨境电商发展的瓶颈。

你是否好奇,为什么90%的爬虫脚本在亚马逊面前都失效了?为何即使是经验丰富的开发者也难以突破这些平台的反爬封锁?接下来,我们将揭开这些谜团,带你踏上跨境电商数据抓取的技术之旅。

一、为什么需要抓取跨境电商数据?

核心价值场景

市场洞察是跨境卖家的第一需求。通过持续监控热销商品和新兴品类趋势,卖家可以准确把握市场脉搏。例如,通过追踪季节性产品(如圣诞装饰品或夏季泳装)的销量波动,卖家能够提前备货,避免错失销售高峰。数据显示,具备精准市场洞察能力的卖家,其季节性产品平均利润率可提升25%以上。

动态定价是另一个关键应用场景。亚马逊上的价格战瞬息万变,实时追踪竞品价格变化已成为必要策略。想象一下,当沃尔玛平台上的竞争对手突然推出限时折扣,而你能在几小时内调整自己的价格策略,这种数据驱动的快速反应能力往往决定了利润空间的大小。根据SellerLabs的研究,及时调整定价策略的卖家比固定价格策略多获得30%的销售额。

竞品分析能帮助卖家识别市场空白和改进方向。通过提取竞争对手的商品描述、用户评价,可以系统性分析他们的优劣势。例如,对亚马逊Top100评论进行情感分析,能揭示出产品最被用户称赞和批评的方面,这些洞察对产品改进至关重要。一位成功的电子产品卖家曾通过分析竞品评论中反复出现的"电池续航不足"问题,优化了自己产品的电池设计,上线仅三个月销量就超过竞品30%。

用户行为研究同样不可或缺。评论与评分数据是真实用户反馈的金矿,通过挖掘这些数据,卖家能够捕捉消费者痛点和偏好。例如,通过数据分析发现某款厨房用具的用户在评论中频繁提及"手柄舒适度",这一发现可能成为你产品设计的突破口。

法律与合规边界

在获取这些宝贵数据的同时,我们必须强调遵守平台Robots协议与数据隐私法规的重要性。无论是欧盟的GDPR还是美国的CCPA,它们都对数据采集设定了严格的法律边界。合规采集不仅是法律要求,也是企业可持续发展的基础。正如一位资深跨境电商顾问所言:"合规的数据采集策略才能带来长期价值,任何违反平台规则的短期捷径最终都会付出更大代价。"

二、工具选择:为什么是Python+Scrapy?

Python生态优势

在众多编程语言中,Python凭借其简洁优雅的语法和强大的生态系统,成为数据采集领域的首选。Python丰富的库支持,如Scrapy、Requests和BeautifulSoup,为开发者提供了完整的工具链。这种生态优势使得即使是编程经验不丰富的跨境卖家,也能够较快上手数据采集工作。

Python社区的活跃度也是其核心优势之一。当你在采集过程中遇到技术难题时,庞大的社区资源几乎能解答任何问题。一位从零开始学习Python爬虫的跨境卖家分享道:"我最初对编程一窍不通,但通过三周的Python学习,我已经能够编写基本脚本抓取竞品价格数据,这在其他语言中几乎不可能。"

Python的另一大优势是其轻量级代码实现复杂逻辑的能力。相比Java等语言,Python能够用更少的代码完成相同功能,这对于需要快速开发和迭代的跨境卖家而言极为重要。在选品分析这类时效性强的场景中,Python的快速开发优势尤为明显。

Scrapy框架核心能力

Scrapy作为Python生态中最专业的爬虫框架,其设计理念正是为大规模、高性能的数据采集而生。它的异步处理机制允许同时处理多个网页请求,极大提升了爬取效率。在实践中,一个优化良好的Scrapy爬虫可以比普通Python脚本快5-10倍。

Scrapy的自动去重功能避免了重复爬取相同URL的资源浪费,而其灵活的中间件扩展系统则是应对反爬的关键架构。通过自定义中间件,开发者可以实现IP轮换、请求头随机化等反反爬策略,这正是攻克电商平台防御系统的核心所在。

与其他工具相比,如Selenium,Scrapy在效率和资源占用上具有明显优势。Selenium虽然能够完整模拟浏览器行为,但其高资源消耗使得大规模采集成本过高。一位资深爬虫工程师曾做过测试:在相同硬件条件下,Scrapy能够处理的请求量是Selenium的8倍以上,而内存占用仅为后者的1/4。这一效率差异在长期运行的数据采集任务中尤为关键。

三、实战样例:Scrapy爬取Amazon商品数据全流程

环境准备

在开始编写爬虫之前,我们需要搭建好开发环境。首先安装Python (推荐使用3.8或更高版本),然后通过pip安装Scrapy及其依赖库:

pip install scrapy
pip install scrapy-user-agents  # 用于轮换User-Agent
pip install scrapy-rotating-proxies  # 用于IP代理轮换

这些库将为我们的爬虫提供基础的反爬能力。对于追求更高稳定性的采集需求,还可以考虑安装scrapy-splashscrapy-selenium来处理JavaScript渲染问题。

项目搭建

使用Scrapy的命令行工具创建项目结构:

scrapy startproject amazon_scraper
cd amazon_scraper
scrapy genspider amazon_products amazon.com

接下来,我们需要在items.py中定义数据模型,明确我们要采集的字段:

import scrapyclass AmazonProductItem(scrapy.Item):product_id = scrapy.Field()title = scrapy.Field()price = scrapy.Field()rating = scrapy.Field()review_count = scrapy.Field()availability = scrapy.Field()description = scrapy.Field()features = scrapy.Field()images = scrapy.Field()category = scrapy.Field()bestseller_rank = scrapy.Field()date_collected = scrapy.Field()

这个数据模型涵盖了亚马逊商品页面的核心信息,为后续分析提供全面数据支持。

爬虫逻辑编写

现在,我们编写核心的爬虫逻辑。以下是一个基础的亚马逊商品爬虫示例:

import scrapy
from datetime import datetime
from ..items import AmazonProductItemclass AmazonProductsSpider(scrapy.Spider):name = 'amazon_products'allowed_domains = ['amazon.com']# 在这里定义您要爬取的类别或搜索结果页start_urls = ['https://www.amazon.com/s?k=wireless+headphones']def parse(self, response):# 提取搜索结果页中的商品链接product_links = response.css('a.a-link-normal.s-no-outline::attr(href)').getall()# 访问每个商品详情页for link in product_links:full_link = response.urljoin(link)yield scrapy.Request(full_link, callback=self.parse_product)# 处理分页next_page = response.css('a.s-pagination-next::attr(href)').get()if next_page:yield scrapy.Request(response.urljoin(next_page), callback=self.parse)def parse_product(self, response):item = AmazonProductItem()# 提取商品IDitem['product_id'] = response.url.split('/dp/')[1].split('/')[0] if '/dp/' in response.url else None# 提取标题item['title'] = response.css('#productTitle::text').get().strip() if response.css('#productTitle::text').get() else None# 提取价格price = response.css('.a-price .a-offscreen::text').get()item['price'] = price.strip() if price else None# 提取评分rating = response.css('#acrPopover::attr(title)').get()item['rating'] = rating.replace(' out of 5 stars', '') if rating else None# 提取评论数review_count = response.css('#acrCustomerReviewText::text').get()item['review_count'] = review_count.replace(' ratings', '').replace(',', '') if review_count else '0'# 提取是否有货availability = response.css('#availability span::text').get()item['availability'] = availability.strip() if availability else None# 提取产品描述description = response.css('#productDescription p::text').getall()item['description'] = ' '.join([d.strip() for d in description]) if description else None# 提取产品特点features = response.css('#feature-bullets ul li span::text').getall()item['features'] = [feature.strip() for feature in features if feature.strip()] if features else None# 提取图片URLimages_script = response.css('script:contains("imageGalleryData")::text').get()if images_script:import jsonimport rematch = re.search(r'var data = ({.*?});', images_script)if match:try:data_dict = json.loads(match.group(1))if 'imageGalleryData' in data_dict:item['images'] = [img['mainUrl'] for img in data_dict['imageGalleryData']]except:item['images'] = None# 提取类别categories = response.css('#wayfinding-breadcrumbs_feature_div ul li span a::text').getall()item['category'] = [cat.strip() for cat in categories if cat.strip()] if categories else None# 提取畅销排名bestseller_text = response.xpath('//th[contains(text(), "Best Sellers Rank")]/following-sibling::td/span/span/text()').getall()if bestseller_text:item['bestseller_rank'] = ' '.join([rank.strip() for rank in bestseller_text])else:item['bestseller_rank'] = None# 添加采集时间戳item['date_collected'] = datetime.now().isoformat()yield item

这段代码实现了从搜索结果页提取商品链接,然后访问每个商品详情页并解析关键数据的逻辑。我们使用CSS选择器和XPath来精确定位页面元素,这是Scrapy的强大之处。对于分页处理,我们识别"下一页"按钮并递归调用解析函数,确保能爬取所有页面的数据。

数据存储

Scrapy提供了多种数据导出格式,最简单的方式是通过命令行参数指定:

scrapy crawl amazon_products -o products.csv
# 或者
scrapy crawl amazon_products -o products.json

对于需要持久化存储的场景,我们可以配置数据库管道。以MongoDB为例,首先安装相关库:

pip install pymongo

然后在pipelines.py中添加数据库存储逻辑:

import pymongo
from pymongo.errors import ConnectionFailureclass MongoDBPipeline:collection_name = 'amazon_products'def __init__(self, mongo_uri, mongo_db):self.mongo_uri = mongo_uriself.mongo_db = mongo_db@classmethoddef from_crawler(cls, crawler):return cls(mongo_uri=crawler.settings.get('MONGO_URI'),mongo_db=crawler.settings.get('MONGO_DATABASE', 'amazon_scraper'))def open_spider(self, spider):try:self.client = pymongo.MongoClient(self.mongo_uri)self.db = self.client[self.mongo_db]# 创建产品ID的唯一索引self.db[self.collection_name].create_index([('product_id', pymongo.ASCENDING)], unique=True)except ConnectionFailure:spider.logger.error("无法连接到MongoDB")def close_spider(self, spider):self.client.close()def process_item(self, item, spider):# 使用产品ID作为去重依据,实现upsertself.db[self.collection_name].update_one({'product_id': item['product_id']},{'$set': dict(item)},  upsert=True)return item

最后在settings.py中启用这个管道:

ITEM_PIPELINES = {'amazon_scraper.pipelines.MongoDBPipeline': 300,
}MONGO_URI = 'mongodb://localhost:27017/'
MONGO_DATABASE = 'amazon_scraper'

这样,我们的爬虫就能将采集到的数据自动存入MongoDB数据库,并实现基于产品ID的自动去重和更新。

四、技术挑战与反爬破解方案

四大核心难题

随着电商平台反爬技术的不断升级,数据采集变得越来越具有挑战性。以下是跨境电商爬虫面临的四大核心难题及其解决方案:

IP封禁

亚马逊等平台会监控访问频率,一旦检测到单个IP的高频访问,会立即触发封锁。有经验的卖家可能都遇到过这样的情况:正在顺利采集数据,突然所有请求都返回验证码页面或直接拒绝访问。

解决方案:搭建高质量的代理IP池是克服IP封禁的关键。代理IP分为住宅代理和数据中心代理两种主要类型:

住宅代理IP来自真实用户的家庭宽带,具有较高的隐蔽性,被封锁的概率较低,但价格昂贵(约0.5-2美元/GB)且稳定性受限。

数据中心代理价格便宜(约0.1美元/GB),速度快且稳定,但容易被识别和批量封锁。

实践中的最佳策略是:对于核心数据采集任务使用住宅代理,而对于非关键任务则使用数据中心代理,以平衡成本和效果。可以通过以下代码集成代理池:

# settings.py
ROTATING_PROXY_LIST = ['http://proxy1.example.com:8000','http://proxy2.example.com:8000',# 更多代理...
]DOWNLOADER_MIDDLEWARES = {'rotating_proxies.middlewares.RotatingProxyMiddleware': 610,'rotating_proxies.middlewares.BanDetectionMiddleware': 620,
}

请求指纹检测

现代电商平台已经不仅仅检查IP,还会分析请求的"指纹"特征,包括User-Agent、HTTP头信息、Cookie模式甚至TLS握手特征。这些综合特征能够精准识别爬虫请求。

解决方案:我们需要全方位模拟真实浏览器行为:

  1. 轮换User-Agent:
# settings.py
DOWNLOADER_MIDDLEWARES = {'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,'scrapy_user_agents.middlewares.RandomUserAgentMiddleware': 400,
}
  1. 自定义请求头随机化中间件:
# middlewares.py
import randomclass RandomHeadersMiddleware:def __init__(self):self.headers_list = [{'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8','Accept-Language': 'en-US,en;q=0.5','Accept-Encoding': 'gzip, deflate, br','Connection': 'keep-alive','Upgrade-Insecure-Requests': '1','Cache-Control': 'max-age=0',},{'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language': 'en-US,en;q=0.9','Accept-Encoding': 'gzip, deflate','Connection': 'keep-alive','Upgrade-Insecure-Requests': '1',},# 更多随机头信息...]def process_request(self, request, spider):request.headers.update(random.choice(self.headers_list))return None
  1. 使用fingerprint-randomizer等工具修改TLS指纹,进一步降低被识别风险。

验证码拦截

亚马逊和沃尔玛等平台广泛使用验证码机制拦截爬虫。特别是亚马逊的图形验证码难度不断增加,已经发展到需要专业工具才能破解的程度。

解决方案:接入第三方验证码识别服务或自建识别模型:

  1. 商业服务集成:2Captcha、Anti-Captcha或DeathByCaptcha等服务提供人工或AI识别验证码的API,准确率高但成本较高(约0.002美元/次)。
# middlewares.py
from twocaptcha import TwoCaptchaclass CaptchaSolverMiddleware:def __init__(self, api_key):self.solver = TwoCaptcha(api_key)@classmethoddef from_crawler(cls, crawler):return cls(crawler.settings.get('CAPTCHA_API_KEY'))def process_response(self, request, response, spider):if 'captcha' in response.url or response.status == 403:try:# 提取验证码图片URLcaptcha_img = response.css('img[src*="captcha"]::attr(src)').get()if captcha_img:# 识别验证码result = self.solver.normal(response.urljoin(captcha_img))# 提交验证码并重新请求return self._submit_captcha(result['code'], response)except Exception as e:spider.logger.error(f"验证码处理错误: {e}")return responsedef _submit_captcha(self, captcha_code, response):# 这里需要根据平台验证码提交方式实现# ...pass
  1. 机器学习自建模型:对于技术资源丰富的团队,可以考虑使用TensorFlow或PyTorch训练专用验证码识别模型,长期来看成本更低,但需要持续维护和更新。

动态渲染与反爬升级

现代电商网站大量使用JavaScript动态加载内容,传统爬虫难以获取完整数据。例如,沃尔玛的商品评论就是通过AJAX异步加载的。

解决方案:结合无头浏览器渲染技术:

  1. 集成Splash/Puppeteer实现JavaScript渲染:
# settings.py
SPLASH_URL = 'http://localhost:8050'DOWNLOADER_MIDDLEWARES = {'scrapy_splash.SplashCookiesMiddleware': 723,'scrapy_splash.SplashMiddleware': 725,'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,
}SPIDER_MIDDLEWARES = {'scrapy_splash.SplashDeduplicateArgsMiddleware': 100,
}DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter'
  1. 模拟真人浏览行为:
# spider中使用Splash执行JavaScript
def start_requests(self):for url in self.start_urls:yield SplashRequest(url,self.parse,args={'wait': 2,  # 等待页面加载'lua_source': """function main(splash, args)splash:go(args.url)splash:wait(2)-- 模拟滚动for i=1,10 dosplash:evaljs("window.scrollBy(0, 300)")splash:wait(math.random(0.3, 0.7))end-- 模拟鼠标移动splash:mouse_move(math.random(100, 400), math.random(100, 400))splash:wait(math.random(0.5, 1.5))return splash:html()end"""})

自建方案痛点

尽管上述技术方案能够实现基本的数据采集需求,但自建爬虫系统存在显著痛点:

  1. 成本高昂:维护高质量代理IP池月均成本可达500-2000美元,加上服务器费用和人力成本,小型卖家难以承受。
  2. 技术门槛复杂:反爬对抗是专业领域,需要网络安全、浏览器指纹、验证码识别等多方面专业知识,普通开发团队难以全面掌握。
  3. 持续对抗升级:电商平台每周都会更新反爬策略,自建爬虫需要不断调整维护,一位资深爬虫工程师坦言:"在亚马逊,我们平均每周要更新两次反爬策略才能保持系统稳定。"

正是这些痛点,促使市场寻求更专业的第三方解决方案。

五、终极方案:Pangolin Scrape API——专注电商数据采集的SaaS利器

面对自建爬虫的重重挑战,Pangolin Scrape API作为专注电商数据的SaaS服务应运而生。它不仅解决了技术难题,还通过规模效应大幅降低了数据采集成本。

产品定位

Pangolin Scrape API是专为跨境电商设计的全托管爬虫服务,重点覆盖Amazon、Walmart、eBay等主流平台。它将复杂的爬虫技术封装为简单的API调用,让卖家无需关心技术细节,专注于数据应用和业务决策。

一位长期使用该服务的卖家表示:"在尝试过三种不同的自建爬虫方案后,我们转向了Pangolin API,这让我们的数据团队规模从5人减少到1人,而数据质量和稳定性反而提高了。"

核心优势

低代码接入是Pangolin Scrape API最直观的优势。开发者只需发送一个简单的API请求,即可获取结构化的JSON格式数据:

import requestsurl = "https://api.pangolin.com/scrape"
params = {"url": "https://www.amazon.com/dp/B08H8VZ6PV","api_key": "YOUR_API_KEY"
}response = requests.get(url, params=params)
product_data = response.json()# 使用数据
print(f"产品标题: {product_data['title']}")
print(f"当前价格: {product_data['price']}")
print(f"评分: {product_data['rating']}")

这种简洁的接口设计使得即使是无编程经验的运营人员,也能通过电子表格或简单工具调用API获取数据。

智能反反爬能力是Pangolin的技术核心。系统内置了动态IP轮换、请求指纹混淆、验证码自动破解等多层防护机制。特别值得一提的是,Pangolin采用了基于机器学习的行为模拟引擎,能够产生几乎无法区分于真人用户的访问模式。据官方数据,其成功率比普通爬虫高出80%以上。

高可用性保障对于依赖实时数据的电商决策至关重要。Pangolin提供99.9%的SLA服务水平协议,内置自动重试与失败补偿机制。在高峰期,如亚马逊Prime Day或黑色星期五,普通爬虫往往会因平台流量激增而失效,而Pangolin的弹性架构能够自动扩容以应对流量高峰。

合规性支持是Pangolin的另一大亮点。服务内置了符合平台Robots协议的访问控制,并提供数据采集的合规咨询。对于跨境卖家而言,这种合规保障可以有效降低法律风险和账号安全隐患。

适用人群

Pangolin API的主要用户群体包括:

  • 电商企业选品/定价团队:利用竞品数据辅助决策,快速响应市场变化
  • 独立站卖家:通过监控主流平台数据,优化自身产品策略
  • 市场分析师:收集海量电商数据构建市场模型和趋势预测
  • 中小开发者:无需投入大量资源构建爬虫系统,专注于业务逻辑开发

使用场景演示

以亚马逊商品监控为例,通过简单的API调用,即可实现自动化数据采集:

curl -X POST https://extapi.pangolinfo.com/api/v1/refreshToken \
-H 'Content-Type: application/json' \
-d '{"email": "xxxx@gmail.com", "password": "xxxx"}'

返回的结构化数据可直接用于业务分析:

{"success": true,"data": {"product_id": "B08H8VZ6PV","title": "Apple Watch Series 6 (GPS, 44mm) - Blue Aluminum Case with Deep Navy Sport Band","price": {"current": 379.99,"currency": "USD","discount_percent": 5},"rating": 4.8,"review_count": 32419,"availability": "In Stock","features": ["GPS model lets you take calls and reply to texts from your wrist","Measure your blood oxygen with an all-new sensor and app","Check your heart rhythm with the ECG app"],"images": ["https://m.media-amazon.com/images/I/71bf9IpGjtL._AC_SL1500_.jpg","https://m.media-amazon.com/images/I/81KqErUpJXL._AC_SL1500_.jpg"],"bestseller_rank": ["#1 in Smartwatches", "#1 in Wearable Technology"],"timestamp": "2025-05-06T08:12:44Z"}
}

而实现批量监控价格变化同样简单:

import requests
import pandas as pd
from datetime import datetime
import time# 加载要监控的ASIN列表
asin_list = ["B08H8VZ6PV", "B08L8DKCS1", "B08PFZ55BB"]
api_key = "YOUR_API_KEY"
base_url = "https://api.pangolin.com/scrape"results = []for asin in asin_list:# 构建亚马逊商品URLamazon_url = f"https://www.amazon.com/dp/{asin}"# 调用Pangolin APIresponse = requests.get(base_url,params={"url": amazon_url,"api_key": api_key})if response.status_code == 200:data = response.json().get("data", {})# 提取关键信息results.append({"asin": asin,"title": data.get("title"),"current_price": data.get("price", {}).get("current"),"currency": data.get("price", {}).get("currency"),"rating": data.get("rating"),"review_count": data.get("review_count"),"availability": data.get("availability"),"timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S")})# 避免请求过于频繁time.sleep(2)# 转换为DataFrame便于分析
df = pd.DataFrame(results)
print(df)# 导出到CSV
df.to_csv(f"amazon_price_monitor_{datetime.now().strftime('%Y%m%d')}.csv", index=False)

这个简单的脚本能够自动监控多个产品的价格和评价变化,为定价策略提供数据支持。更复杂的应用场景,如竞品分析、评论情感挖掘、库存状态追踪等,同样可以基于Pangolin API轻松实现。

结论:数据赋能跨境增长,技术决定效率上限

在数据驱动的跨境电商时代,高质量、及时的市场数据已成为成功的关键因素。本文详细介绍了使用Python+Scrapy构建电商爬虫的技术路径,揭示了跨境电商数据采集面临的核心挑战与解决方案,并展示了Pangolin Scrape API如何作为专业SaaS服务简化数据采集流程。

数据采集只是起点,真正的价值在于如何利用这些数据洞察市场趋势、优化产品策略、提升用户体验。正如一位跨境电商专家所言:"在跨境竞争中,不是大鱼吃小鱼,而是快鱼吃慢鱼。而数据的速度和质量,恰恰决定了谁能成为那条快鱼。"

对于大多数跨境卖家而言,选择专业的数据服务比自建爬虫更为经济高效。Pangolin Scrape API通过降低技术门槛,让企业能够专注于业务而非爬虫维护,从而在竞争中占据先机。

立即开始您的数据驱动跨境电商之旅!体验专业电商数据服务带来的效率提升。访问pangolin.com/free-trial开启您的数据采集新时代!

相关文章:

  • HarmonyOS开发:粒子动画使用详解
  • shell-流程控制-循环-函数
  • 新一代Python专业编译器Nuitka简介
  • 20. LangChain电商场景:构建智能客服与个性化推荐系统
  • MySQL 强制使用特定索引
  • Unity学习笔记二
  • (undone) xv6-labs-2020 补充 LAB lazy page allocation (Day11 xv6-2020 LAB5 懒分配)
  • py实现win自动化自动登陆qq
  • Android View#post()源码分析
  • tinyrenderer笔记(Shader)
  • C语言数组和函数的实践———扫雷游戏
  • APP自动化测试(一)
  • 9-4 USART串口数据包
  • [HOT 100] 1377. T 秒后青蛙的位置
  • 在若依里创建新菜单
  • uniapp开发11-v-for动态渲染list列表数据
  • Beetle 树莓派RP2350 - 桌面时钟摆件
  • 探索Hello Robot开源移动操作机器人Stretch 3的技术亮点与市场定位
  • Banana Pi BPI-CM6 是一款八核 RISC-V 模块,兼容 Raspberry Pi CM 载板
  • POI创建Excel文件
  • 姜再冬大使会见巴基斯坦副总理兼外长达尔
  • 哥伦比亚总统称将在访华期间签署“一带一路”倡议意向书,外交部回应
  • 联合国秘书长吁印巴“最大程度克制”,特朗普:遗憾,希望尽快结束冲突
  • 沪幼升小网上报名明起开始,是否参与民办摇号怎么定?
  • 以总理:在加沙地带扩大的军事行动将是“高强度”的
  • 伯克希尔董事会投票决定:阿贝尔明年1月1日起出任CEO,巴菲特继续担任董事长