如何从Quizlet网站获取词集?C#控制台程序遇403错误
解决Quizlet爬取403错误及入门方向
一、先解决当前403错误
- 原因:默认
HttpClient请求未携带浏览器标识,被网站反爬机制拦截。 - 解决方法:给请求添加模拟浏览器的请求头,修改后代码如下:
static async void WebsiteStuff() { Console.Clear(); await GetWebsiteInfo(); Console.ReadLine(); } static async Task GetWebsiteInfo() { using HttpClient client = new HttpClient(); // 添加模拟浏览器的请求头,避免被反爬识别 client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"); try { string response = await client.GetStringAsync("https://quizlet.com/ch/795679237/test2-flash-cards/?funnelUUID=546d9a40-6e88-42ce-aac9-795f71a1bec5"); Console.WriteLine(response); } catch (HttpRequestException ex) { Console.WriteLine($"请求失败:{ex.Message}"); } }
备注:用using声明HttpClient可自动释放资源,比直接实例化更规范。
二、更高效的词集获取思路
直接爬取网页HTML后续还需解析,效率低且易触发反爬,推荐两种方向:
- 优先用Quizlet官方API:Quizlet提供开放API(需申请密钥),可直接通过接口获取结构化的词集数据,这是最稳定合规的方式。
- 若官方API受限,可做网页接口逆向:打开浏览器F12开发者工具,切换到Network标签,刷新词集页面,观察XHR/Fetch类型的请求,找到返回词集数据的JSON接口,直接请求该接口比爬HTML更简单。
三、入门搜索关键词
- C# HttpClient 请求头设置
- Quizlet API 词集获取
- 网页接口逆向分析
- 反爬绕过 User-Agent
- C# HTML解析(如使用HtmlAgilityPack库)
内容的提问来源于stack exchange,提问作者KRUM 3
相关产品推荐
相关产品推荐

