前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 Playwright 和 C# 自动化采集亚马逊网站的商品信息和评论

使用 Playwright 和 C# 自动化采集亚马逊网站的商品信息和评论

原创
作者头像
jackcode
发布2023-04-11 14:21:01
1.2K0
发布2023-04-11 14:21:01
举报
文章被收录于专栏:爬虫资料爬虫资料
亿牛云代理
亿牛云代理

Playwright 是一个用于测试和自动化网页的库,可以使用 C# 语言来控制 Chromium、Firefox 和 WebKit 这三种浏览器。Playwright 由微软开发,可以实现跨浏览器的网页自动化,具有高效、可靠和快速的特点。

使用 Playwright,可以模拟用户的行为,比如访问亚马逊网站(https://www.amazon.com),并使用爬虫技术来采集商品的信息和评论。可以使用 CSS 或 XPath 选择器来定位网页上的元素,并获取它们的文本或属性。

例如,可以使用 Playwright 来采集亚马逊上国际畅销书的列表,首先你需要打开这个链接:https://www.amazon.com/b?node=17938598011。然后可以找到所有的书籍元素,它们都有两个类名 a-section 和 a-spacing-base。接着可以遍历每个书籍元素,并获取它们的标题、价格、评分和评论数等信息。

这样,就可以使用 Playwright 和 C# 语言来自动化和采集基于 Chromium 的亚马逊网页和评论数据了。下面是代码实现:

代码语言:c#
复制
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Playwright;

class Program
{
    static async Task Main(string[] args)
    {
        // 初始化 Playwright
        using var playwright = await Playwright.CreateAsync();
        //亿牛云爬虫代理加强版的代理服务器地址和端口号
            var proxyServer = "http://www.16yun.cn:3100";  
        var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions
        {
            Proxy = new ProxySettings
            {
                Server = proxyServer,
                //亿牛云爬虫代理加强版的用户名
                Username = "your_username", 
                //亿牛云爬虫代理加强版的密码
                Password = "your_password",
            }
        });
        
        // 创建一个新的上下文
        var context = await browser.NewContextAsync(new BrowserNewContextOptions
        {
            ViewportSize = new ViewportSize
            {
                Width = 1280,
                Height = 720,
            },
        });
        
        // 创建一个新的页面
        var page = await context.NewPageAsync();
        
        // 导航到亚马逊网站
        await page.GotoAsync("https://www.amazon.com/");
        
        // 输入关键字搜索
        await page.FillAsync("#twotabsearchtextbox", "laptop");
        await page.ClickAsync("#nav-search-submit-button");
        
        // 等待搜索结果页面加载完成
        await page.WaitForLoadStateAsync(LoadState.NetworkIdle);
        
        // 获取商品链接列表
        var links = await page.EvaluateAsync<IEnumerable<string>>(@"
            Array.from(document.querySelectorAll('.s-result-item h2 a'))
            .map(a => a.href)
        ");
        
        // 创建任务列表
        var tasks = new List<Task>();
        
        // 遍历商品链接列表,采集评论数据
        foreach (var link in links)
        {
            tasks.Add(Task.Run(async () =>
            {
                // 创建一个新的页面
                var page = await context.NewPageAsync();
                
                // 设置页面的 User-Agent
                await page.SetUserAgentAsync("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36");
                
                // 导航到商品页面
                await page.GotoAsync(link);
                
                // 等待商品页面加载完成
                await page.WaitForLoadStateAsync(LoadState.NetworkIdle);
                
                // 获取商品名称
                var title = await page.InnerTextAsync("#productTitle");
                
                // 获取商品评价信息
                var rating = await page.InnerTextAsync("#averageCustomerReviews .a-icon-star-small .a-icon-alt");
                var reviewCount = await page.InnerTextAsync("#acrCustomerReviewText");
                
                // 输出采集的数据
                Console.WriteLine($"{title}: {rating} ({reviewCount})");
                
                // 关闭页面
                await page.CloseAsync();
            }));
        }
        
        // 等待所有任务完成
        await Task.WhenAll(tasks);
        
        // 关闭浏览器
        await browser.CloseAsync();
    }
}

这个代码使用了 Playwright 库来实现自动化和采集基于 Chromium 的亚马逊网页和评论数据。它创建了一个 Chromium 浏览器实例,并使用代理服务器来访问网站。它还创建了一个新的页面,并通过输入关键字搜索获取商品链接列表。然后,它遍历商品链接列表,为每个商品创建一个新的任务,并采集商品名称、评价信息等数据。最后,它等待所有任务完成并关闭浏览器。

这个代码还使用了多线程技术,为每个商品创建一个新的任务来采集数据。这可以提高采集数据的效率,同时也可以降低被网站屏蔽的风险。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档