C#-Selenium爬虫抓取(一)

这篇具有很好参考价值的文章主要介绍了C#-Selenium爬虫抓取(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。他能支持主流编程语言,以及拥有多种浏览器驱动。
用C#写爬虫确实是不方便,网上的资料也相对较少,但懒得配python的环境,所以选用了C#。本文用C#做了一些爬虫抓取的尝试,包括登录、抓取信息,筛选信息。Selenium的用法都是相同的,基础的操作用什么语言来写没什么差别,操作方法与逻辑也都可以在别的语言直接实现。
原理与逻辑:通过代码指令,识别分析前端语言并代替人手动操作如点击、输入、选择等操作,相比于人手更加的具有复用性,准确性。常用于定时签到(抢票类),以及大量的数据选取等操作。

环境与配置

选用Winform框架,配置Driver驱动:
C#-Selenium爬虫抓取(一)
引用(自动添加即可):

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.PhantomJS;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Windows.Forms;

chromedriver版本驱动安装
先Chrome检查版本号
C#-Selenium爬虫抓取(一)

并于http://chromedriver.storage.googleapis.com/index.html
下载对应版本驱动,添加下环境变量,安装位置在下述代码中用于启动驱动。

代码块示例

public void GetHtml(string url)
            {
                PhantomJSDriverService driverService = PhantomJSDriverService.CreateDefaultService();
                driverService.IgnoreSslErrors = true;
                ChromeOptions options = new ChromeOptions();
                options.AddArgument("--headless");
                options.AddArgument("--nogpu");
                //options.AddArguments(profile_directory);
                List<String> tagNmaeList = new List<string>();
                using (driver = new ChromeDriver(@"C:\Users\Downloads", options, TimeSpan.FromSeconds(120)))//启动驱动
                {
                    //Login(driver);
                    try
                    {
                        driver.Manage().Window.Maximize();
                        driver.Navigate().GoToUrl(url);
                        Thread.Sleep(5000);
                        string js1 = "login-qrcode__title__right";
                        string js2 = "js-tab-password-login";
                        string js3 = "js-login-btn";
                        //点击按钮
                        driver.FindElementByClassName(js1).Click();
                        driver.FindElementByClassName(js2).Click();
                        driver.FindElementsByClassName("zent-checkbox")[0].Click();//对勾选框的选择
                        driver.FindElementsByClassName("zent-checkbox")[1].Click();
                       //输入账号密码
                        driver.FindElementByClassName("zent-input").SendKeys("10001");
                        driver.FindElementByName("password").SendKeys("1234567");
                        Thread.Sleep(200);
                        driver.GetScreenshot().SaveAsFile("C:\\Users\\Desktop\\WebScreen.PNG",System.Drawing.Imaging.ImageFormat.Png);
                        driver.FindElementByClassName(js3).Click();
                        Thread.Sleep(200);//线程等待载入
                        Console.WriteLine(driver.PageSource); //输出网页源码
                        System.IO.File.WriteAllText(@"C:\Users\Desktop\WriteLines.txt", driver.PageSource);//输出到txt
                    }
                    catch (NoSuchElementException)
                    {
                        Console.WriteLine("找不到该元素"); ;
                    }
                }

            }
        }

各项动作功能介绍

C#-Selenium爬虫抓取(一)

1.通过元素识别
1.1通过类名识别,并点击:

driver.FindElementByClassName(str).Click();

如果是多项同名类,我们可以按序号来抓取到:

driver.FindElementsByClassName(str)[0].Click();
//注意差别           

1.2通过其他方式识别,如id等,如下:
C#-Selenium爬虫抓取(一)
2.识别元素后的操作
2.1密码块输入示例:

driver.FindElementByName("password").SendKeys("1234567");

2.2其他操作:
例如通过text抓取信息等
C#-Selenium爬虫抓取(一)
3.抓取页面信息
截取信息块PageSource输出:

System.IO.File.WriteAllText(@"C:\Users\Desktop\WriteLines.txt", driver.PageSource);//输出到txt

截图检查网页情况:

driver.GetScreenshot().SaveAsFile("C:\\Users\\Desktop\\WebScreen.PNG",System.Drawing.Imaging.ImageFormat.Png);

截取到的登录页面示例如下:
C#-Selenium爬虫抓取(一)

如此,便可以让驱动开始进行点击、输入等交互动作,从而完成页面跳转、登录,初步的抓取。抓取结果其实就是你在网页检查中看到的源代码,你需要获取的信息会夹在源代码中。

注意事项

1.url与类名的准确性,这个不用多说。
2.驱动的版本对应问题:
如果有这种问题,说明驱动版本号不对应,去Chrome检查版本号,按前文说明重新安装一下。
C#-Selenium爬虫抓取(一)
3.登录问题
登录过程中可能有其他的反爬机制,例如验证码与人机验证框,可以通过cookie跳过登录过程,这个以后再更新。文章来源地址https://www.toymoban.com/news/detail-434240.html

到了这里,关于C#-Selenium爬虫抓取(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux CentOS7安装chrome和chromedriver(WebDriver),用于selenium爬虫(java代码演示)

    序号 产品 版本 备注 1 CentOS 7.9 2 chrome 99.0.4844.51 chrome 与 ChromeDriver 的版本必须一致 3 ChromeDriver 99.0.4844.51 chrome 与 ChromeDriver 的版本必须一致 4 selenium 4.12.1 4 JAVA 8 1.1.1. chrome 下载 点击 chrome历史版本下载,按步骤下载 从下载的压缩包解压出rpm,上传 CentOS 系统 1.1.2. chrome 安装 安

    2024年02月20日
    浏览(43)
  • 继续上一个爬虫,所以说selenium加browsermobproxy

    继续,书接上回,这次我通过jsrpc,也学会了不少逆向的知识,感觉对于一般的网站应该都能应付了。当然我说的是简单的网站,遇到那些混淆的,还有那种猿人学里面的题目,还是免谈了。那种需要的水平太高,我学习爬虫的目的也不是找什么工作,只是为了找数据,能够

    2024年02月06日
    浏览(50)
  • Scala语言用Selenium库写一个爬虫模版

    首先,我将使用Scala编写一个使用Selenium库下载yuanfudao内容的下载器程序。 然后我们需要在项目的build.sbt文件中添加selenium的依赖项。以下是添加Selenium依赖项的代码: 接下来,我们需要创建一个Selenium的WebDriver对象,以便我们可以使用它来控制浏览器。以下是如何创建WebDri

    2024年02月05日
    浏览(42)
  • 记录一个爬虫过程,从基础爬虫到逆向,再到jsrpc,再到selenium,啥都包括了

    这篇文章记录一下我跟一个网站的恩怨纠葛,为了爬这个网站,不断学习新知识,不断尝试,水平提高了不少。总算有点成就了,这里做一个记录,当然还是不完美,期待未来可能技术更精进,能有更好的方法吧。 这个网站是:aHR0cDovL3NkLmNoaW5hdm9sdW50ZWVyLm1jYS5nb3YuY24vc3Vic2l0ZS9

    2024年02月07日
    浏览(45)
  • excel爬虫相关学习2:vba 爬虫相关xmlhttp 前言:vba 爬虫相关xmlhttp的方法

    目录 前言:vba 爬虫相关xmlhttp的方法 1 什么是xmlhttp 1.1 定义 1.2 特点 1.3 创建xmlhttp对象的过程 1.4  XMLHTTP对象创建的几种方法: 2 XMLHTTP方法: 2.1 xmlhttp.open(Method, Url, Async, User,Password) 2.1.1 xmlhttp.open()方法 2.1.2 参数  2.1.3 xmlhttp.open(get, url) 2.1.4 xmlhttp.open(post, url) 2.1.5 xmlhttp.open(p

    2024年02月11日
    浏览(49)
  • python爬虫selenium页面滑动案例,作为一个Python程序员你还不会JetPack

    def up_page(self): time.sleep(1) self.driver.find_element(By.XPATH,‘//*[text()=“下一页”]’).click() def save_page(self, n=1): time.sleep(2) with open(f’第{n}页.html’, ‘w’, encoding=‘utf-8’) as f: f.write(self.driver.page_source) def run(self): try: self.save_page() # 第一页 for n in range(2, 6): # 第二三四五页 self.scroll() s

    2024年04月22日
    浏览(50)
  • 逆向爬虫进阶实战:突破反爬虫机制,实现数据抓取

    随着网络技术的发展,网站为了保护自己的数据和资源,纷纷采用了各种反爬虫机制。然而,逆向爬虫技术的出现,使得我们可以突破这些限制,实现对目标网站的深入分析和抓取。本文将介绍逆向爬虫进阶实战的一些技巧和代码片段,帮助读者更好地理解和掌握这一技术。

    2024年02月04日
    浏览(53)
  • 高并发数据抓取实战:使用HTTP爬虫ip提升抓取速度

    又到每天一期学习爬虫的时间了,作为一名专业的爬虫程序员,今天要跟你们分享一个超实用的技巧,就是利用HTTP爬虫ip来提升高并发数据抓取的速度。听起来有点高大上?别担心,我会用通俗易懂的话来和你们说,让你们秒懂怎么操作的。 首先,咱们得理解一下为什么HT

    2024年02月11日
    浏览(50)
  • Python爬虫抓取网页

    本节讲解第一个 Python 爬虫实战案例:抓取您想要的网页,并将其保存至本地计算机。 首先我们对要编写的爬虫程序进行简单地分析,该程序可分为以下三个部分: 拼接 url 地址 发送请求 将照片保存至本地 明确逻辑后,我们就可以正式编写爬虫程序了。 本节内容使用 urll

    2024年02月08日
    浏览(49)
  • 爬虫案例—抓取小米商店应用

    代码如下: # 抓取第一页的内容 import requests from lxml import etree url = ‘https://app.mi.com/catTopList/0?page=1’ headers = { ‘User-Agent’: ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36’ } res = requests.get(url, headers=headers) content = res.content.decode(‘

    2024年01月16日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包