再次了解数据读取

  记录工作:

本周为完成任务,读取网站数据,之前的认知是模拟http请求获取网页信息或者结构化数据,但本次实践困难重重,获取cookie去模拟登录,发现需要鉴权认证等操作,比较复杂。经过大神指导学习到Selenium WebDriver 尚可解决,现在任务已完成,做一下记录!

Selenium WebDriver 的介绍参考  WebDriver介绍_hzm326的博客-CSDN博客

我本次是通过WebDriver 做模拟登录,然后获取 cookie 再通过OKHTTP3 + 代理去请求结构化数据

Maven 引入:

<dependency>
   <groupId>org.seleniumhq.selenium</groupId>
   <artifactId>selenium-java</artifactId>
   <version>4.5.0</version>
</dependency>
<dependency>
   <groupId>org.seleniumhq.selenium</groupId>
   <artifactId>selenium-devtools</artifactId>
   <version>4.0.0-rc-1</version>
</dependency>

 模拟浏览器登录需要下载浏览器驱动,我是用的是火狐浏览器下载驱动程序到本地geckodriver.exe

下载地址:Releases · mozilla/geckodriver · GitHub

下载好放到本地

// geckodriver.exe 绝对地址
String firefoxDriverPath = "D:\\driver\\geckodriver.exe";
// 设置指定键对值的系统属性
System.setProperty("webdriver.gecko.driver", firefoxDriverPath);

//浏览器配置
FirefoxOptions firefoxOptions = new FirefoxOptions();

//浏览器静默启动  不需要可不配置
//FirefoxBinary firefoxBinary = new FirefoxBinary();
//firefoxBinary.addCommandLineOptions("--headless");
//firefoxOptions.setBinary(firefoxBinary);

//浏览器设置代理 不需要也可不配置
//FirefoxProfile profile = new FirefoxProfile();
//profile.setPreference("network.proxy.type", 1);
//profile.setPreference("network.proxy.http", proxyIp);
//profile.setPreference("network.proxy.http_port", proxyPort);
//firefoxOptions.setProfile(profile);

//打开浏览器
WebDriver driver = new FirefoxDriver(firefoxOptions);

//设置窗口
driver.manage().window().maximize();

//打开百度
driver.get("https://www.baidu.com/");
//定位到百度的输入框,并且输入内容
By input = By.className("s_ipt");
driver.findElement(input).sendKeys("年轻人不结婚");

//浏览5秒
try {
      Thread.sleep(5000);
    } catch (Exception e) {
      e.printStackTrace();
    }

//获取Cookie
Set<Cookie> cookies = driver.manage().getCookies();

driver.close();

以上仅为参考案例,我实际获取到cookie 使用OKHTTP3 去发送post请求,获取结构化数据,并且持久化;在发送okhttp请求加上代理报错 java.lang.NoSuchMethodError:okio.BufferedSource.getBuffer()Lokio/Buffer;

再引入okio包即可解决

<dependency>
   <groupId>com.squareup.okio</groupId>
   <artifactId>okio</artifactId>
   <version>2.10.0</version>
</dependency>

如果获取的不是结构化数据,直接获取页面数据通过

//获取页面数据
String pageSource = driver.getPageSource();

Document document =Jsoup.parse(pageSource);

JSoup 参考 Jsoup详解_乐天_米豆的博客-CSDN博客_jsoup

工作日常做个记录,各位大佬请多多指教

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Matlab是一种常用的数据处理和科学计算软件,支持通过串口读取外接设备或传感器的数据。实现串口数据读取通常需要以下步骤: 1. 首先需要打开串口。可以使用Matlab内置的serial函数来创建一个串口对象,并设置串口号、波特率等参数。例如: s = serial('COM1','BaudRate',9600);%创建串口对象 fopen(s);%打开串口 2. 接着需要读取串口数据。可以使用Matlab内置的fread函数或fscanf函数来读取数据读取数据时需要设置读取数据类型、读取的长度、读取的结束符等参数。例如,读取10个字节的数据: data = fread(s, 10); 3. 读取数据后需要关闭串口,以便下次再次使用。可以使用Matlab内置的fclose函数来关闭串口。例如: fclose(s);%关闭串口 4. 在读取串口数据时,需要注意如果数据格式不规范或错误,则可能会导致读取数据失败。此时需要适当调整数据读取的参数或检查设备端是否正常运行。 总的来说,使用Matlab实现串口数据读取并不困难,只需要了解串口读取的基本步骤和相关参数设置即可。同时,还需要注意数据的格式和正确性,以保证读取到的数据准确无误。 ### 回答2: MATLAB是一种常用的科学计算软件,具有强大的计算和可视化功能。同时,它也支持通过串口读取数据。实现串口数据读取步骤如下: 1. 打开串口 在MATLAB中,可以通过使用serial函数打开一个串口对象。需要指定串口名称、波特率、数据位等参数。例如: s = serial('COM1', 'BaudRate', 115200, 'DataBits', 8); 2. 配置串口 为了让串口对象能够正常工作,还需要进行一些配置。例如设置字节顺序、流控制方式等。可以通过set函数设置相关参数。例如: set(s, 'ByteOrder', 'littleEndian', 'FlowControl', 'software'); 3. 打开串口 配置完成后,需要通过fopen函数打开串口。例如: fopen(s); 4. 读取数据 打开串口后,就可以使用fread、fscanf等函数读取数据了。例如: data = fscanf(s, '%f'); 其中,%f表示读取一个浮点数。 5. 关闭串口 读取数据完成后,需要通过fclose函数关闭串口对象。例如: fclose(s); 通过上述步骤,就可以在MATLAB中实现串口数据读取。需要注意的是,在读取数据时需要根据实际情况设置正确的数据读取格式,以便正确解析串口数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值