2023.2.7---字符驱动

点灯实验:

//led.h
#ifndef __LED_H__
#define __LED_H__

//pe10,pf10,pe8
#define RCC 0x50000a28
#define GPIOE_MODER 0x50006000
#define GPIOE_ODR 0x50006014
#define GPIOF_MODER 0x50007000
#define GPIOF_ODR 0x50007014

#endif
//应用层代码
#include<stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
int main(int argc,const char * argv[])
{
    int fd=open("/dev/mycdev",O_RDWR);
    if(fd<0)
    {
        perror("open");
        return -1;
    }
    char buf[128]="";
    while(1)
    {
        printf("请输入命令>>");
        fgets(buf,sizeof(buf),stdin);
        buf[strlen(buf)-1]='\0';
        write(fd,buf,sizeof(buf));
    }
    close(fd);
    return 0;
}
//内核层的代码
#include <linux/init.h>
#include <linux/module.h>
#include <linux/fs.h>
#include<linux/uaccess.h>
#include<linux/io.h>
#include "led.h"

int major; //接收主设备号
int res;
//接收映射后的虚拟内存地址
unsigned int *vir_rcc;
unsigned int *vir_emoder;
unsigned int *vir_eodr;
unsigned int *vir_fmoder;
unsigned int *vir_fodr;
char kbuf[128]="";

//定义自己的open,read,write,release函数
int my_open(struct inode *indoe,struct file *file)
{
    printk("%s:%s:%d\n",__FILE__,__func__,__LINE__);
    return 0;
}
ssize_t my_read(struct file *file,char *user,size_t size,loff_t *loff)
{
    if(size>sizeof(kbuf)) //判断kbuf的大小
    {
        size=sizeof(kbuf);
    }
    //内核空间的数据拷贝到用户空间
    res=copy_to_user(user,kbuf,size);
    if(res)
    {
        printk("copy failed\n");
        return -1;
    }
    printk("%s:%s:%d\n",__FILE__,__func__,__LINE__);
    return 0;
}
ssize_t my_write(struct file *file,const char *user,size_t size,loff_t *loff)
{
    if(size>sizeof(kbuf))
    {
        size=sizeof(kbuf);
    }
    //用户空间中的数据拷贝到内核空间
    res=copy_from_user(kbuf,user,size);
    if(res)
    {
        printk("copy failed\n");
        return -1;
    }
    //判断用户在终端输入的数据
    switch(kbuf[0])
    {
    case '1':
        if(kbuf[1]=='1')
        {
            //led1亮
            *vir_eodr |= (1<<10);
        }
        else if (kbuf[1]=='0')
        {
            //led1灭
            *vir_eodr &= (~(1<<10));
        }
        break;
    case '2':
        if(kbuf[1]=='1')
        {
            *vir_fodr |= (1<<10);
        }
        else if (kbuf[1]=='0')
        {
            *vir_fodr &= (~(1<<10));
        }
        break;
    case '3':
        if(kbuf[1]=='1')
        {
            *vir_eodr |= (1<<8);
        }
        else if (kbuf[1]=='0')
        {
            *vir_eodr &= (~(1<<8));
        }
        break;
    default:break;
    }
    
    //printk("%s:%s:%d\n",__FILE__,__func__,__LINE__);
    return 0;
}
int my_close(struct inode *inode,struct file *file)
{
    printk("%s:%s:%d\n",__FILE__,__func__,__LINE__);
    return 0;
}
//定义操作方法结构体并初始化
struct file_operations fops=
{   
    .open=my_open,
    .read=my_read,
    .write=my_write,
    .release=my_close,
};
//入口函数
static int __init mycdev_init(void)
{
    //注册字符驱动设备
    major=register_chrdev(0,"mycdev",&fops);
    if(major<0)
    {
        printk("字符设备驱动注册失败\n");
        return major;
    }
    printk("字符设备驱动注册成功,主设备号:%d",major);
    /****映射物理内存地址到虚拟内存中****/
    vir_rcc=ioremap(RCC,4);
    if(vir_rcc==NULL)
    {
        printk("rcc寄存器映射失败\n");
        return -1;
    }
    vir_emoder=ioremap(GPIOE_MODER,4);
    if(vir_emoder==NULL)
    {
        printk("emoder寄存器映射失败\n");
        return -1;
    }
    vir_eodr=ioremap(GPIOE_ODR,4);
    if(vir_eodr==NULL)
    {
        printk("eodr寄存器映射失败\n");
        return -1;
    }
    vir_fmoder=ioremap(GPIOF_MODER,4);
    if(vir_fmoder==NULL)
    {
        printk("fmoder寄存器映射失败\n");
        return -1;
    }
    vir_fodr=ioremap(GPIOF_ODR,4);
    if(vir_fodr==NULL)
    {
        printk("fodr寄存器映射失败\n");
        return -1;
    }
    (*vir_rcc) |= (3<<4);
    //初始化led1,led2,led3
    (*vir_emoder) &= (~(3<<20));
    (*vir_emoder) |= (1<<20);
    (*vir_fmoder) &= (~(3<<20));
    (*vir_fmoder) |= (1<<20);
    (*vir_emoder) &= (~(3<<16));
    (*vir_emoder) |= (1<<16);
    return 0;
}
//出口函数
static void __exit mycdev_exit(void)
{
    //注销字符设备驱动
    unregister_chrdev(major,"mycdev");
}
module_init(mycdev_init);
module_exit(mycdev_exit);
MODULE_LICENSE("GPL");
C:\Users\lenovo\.jdks\ms-17.0.15\bin\java.exe "-javaagent:D:\新建文件夹\IntelliJ IDEA 2023.3.4\lib\idea_rt.jar=49561:D:\新建文件夹\IntelliJ IDEA 2023.3.4\bin" -Dfile.encoding=UTF-8 -classpath D:\highStudy\WebMagic\target\classes;D:\apache-maven-3.6.1\mav-repo\io\github\bonigarcia\webdrivermanager\5.6.0\webdrivermanager-5.6.0.jar;D:\apache-maven-3.6.1\mav-repo\org\slf4j\slf4j-api\2.0.9\slf4j-api-2.0.9.jar;D:\apache-maven-3.6.1\mav-repo\com\google\code\gson\gson\2.10.1\gson-2.10.1.jar;D:\apache-maven-3.6.1\mav-repo\com\github\docker-java\docker-java\3.3.3\docker-java-3.3.3.jar;D:\apache-maven-3.6.1\mav-repo\com\github\docker-java\docker-java-core\3.3.3\docker-java-core-3.3.3.jar;D:\apache-maven-3.6.1\mav-repo\com\github\docker-java\docker-java-api\3.3.3\docker-java-api-3.3.3.jar;D:\apache-maven-3.6.1\mav-repo\org\bouncycastle\bcpkix-jdk18on\1.75\bcpkix-jdk18on-1.75.jar;D:\apache-maven-3.6.1\mav-repo\org\bouncycastle\bcprov-jdk18on\1.75\bcprov-jdk18on-1.75.jar;D:\apache-maven-3.6.1\mav-repo\org\bouncycastle\bcutil-jdk18on\1.75\bcutil-jdk18on-1.75.jar;D:\apache-maven-3.6.1\mav-repo\org\slf4j\jcl-over-slf4j\2.0.9\jcl-over-slf4j-2.0.9.jar;D:\apache-maven-3.6.1\mav-repo\com\github\docker-java\docker-java-transport-httpclient5\3.3.3\docker-java-transport-httpclient5-3.3.3.jar;D:\apache-maven-3.6.1\mav-repo\com\github\docker-java\docker-java-transport\3.3.3\docker-java-transport-3.3.3.jar;D:\apache-maven-3.6.1\mav-repo\net\java\dev\jna\jna\5.12.1\jna-5.12.1.jar;D:\apache-maven-3.6.1\mav-repo\org\brotli\dec\0.1.2\dec-0.1.2.jar;D:\apache-maven-3.6.1\mav-repo\org\apache\commons\commons-lang3\3.13.0\commons-lang3-3.13.0.jar;D:\apache-maven-3.6.1\mav-repo\org\apache\commons\commons-compress\1.24.0\commons-compress-1.24.0.jar;D:\apache-maven-3.6.1\mav-repo\org\apache\httpcomponents\client5\httpclient5\5.2.1\httpclient5-5.2.1.jar;D:\apache-maven-3.6.1\mav-repo\org\apache\httpcomponents\core5\httpcore5\5.2.3\httpcore5-5.2.3.jar;D:\apache-maven-3.6.1\mav-repo\org\apache\httpcomponents\core5\httpcore5-h2\5.2.3\httpcore5-h2-5.2.3.jar;D:\apache-maven-3.6.1\mav-repo\org\springframework\boot\spring-boot-starter\3.2.0\spring-boot-starter-3.2.0.jar;D:\apache-maven-3.6.1\mav-repo\org\springframework\boot\spring-boot\3.2.0\spring-boot-3.2.0.jar;D:\apache-maven-3.6.1\mav-repo\org\springframework\spring-context\6.1.1\spring-context-6.1.1.jar;D:\apache-maven-3.6.1\mav-repo\org\springframework\boot\spring-boot-autoconfigure\3.2.0\spring-boot-autoconfigure-3.2.0.jar;D:\apache-maven-3.6.1\mav-repo\org\springframework\boot\spring-boot-starter-logging\3.2.0\spring-boot-starter-logging-3.2.0.jar;D:\apache-maven-3.6.1\mav-repo\ch\qos\logback\logback-classic\1.4.11\logback-classic-1.4.11.jar;D:\apache-maven-3.6.1\mav-repo\ch\qos\logback\logback-core\1.4.11\logback-core-1.4.11.jar;D:\apache-maven-3.6.1\mav-repo\org\apache\logging\log4j\log4j-to-slf4j\2.21.1\log4j-to-slf4j-2.21.1.jar;D:\apache-maven-3.6.1\mav-repo\org\apache\logging\log4j\log4j-api\2.21.1\log4j-api-2.21.1.jar;D:\apache-maven-3.6.1\mav-repo\org\slf4j\jul-to-slf4j\2.0.9\jul-to-slf4j-2.0.9.jar;D:\apache-maven-3.6.1\mav-repo\jakarta\annotation\jakarta.annotation-api\2.1.1\jakarta.annotation-api-2.1.1.jar;D:\apache-maven-3.6.1\mav-repo\org\springframework\spring-core\6.1.1\spring-core-6.1.1.jar;D:\apache-maven-3.6.1\mav-repo\org\springframework\spring-jcl\6.1.1\spring-jcl-6.1.1.jar;D:\apache-maven-3.6.1\mav-repo\org\yaml\snakeyaml\2.2\snakeyaml-2.2.jar;D:\apache-maven-3.6.1\mav-repo\org\seleniumhq\selenium\selenium-java\4.15.0\selenium-java-4.15.0.jar;D:\apache-maven-3.6.1\mav-repo\org\seleniumhq\selenium\selenium-api\4.15.0\selenium-api-4.15.0.jar;D:\apache-maven-3.6.1\mav-repo\org\seleniumhq\selenium\selenium-chrome-driver\4.15.0\selenium-chrome-driver-4.15.0.jar;D:\apache-maven-3.6.1\mav-repo\com\google\auto\service\auto-service-annotations\1.1.1\auto-service-annotations-1.1.1.jar;D:\apache-maven-3.6.1\mav-repo\org\seleniumhq\selenium\selenium-chromium-driver\4.15.0\selenium-chromium-driver-4.15.0.jar;D:\apache-maven-3.6.1\mav-repo\org\seleniumhq\selenium\selenium-json\4.15.0\selenium-json-4.15.0.jar;D:\apache-maven-3.6.1\mav-repo\org\seleniumhq\selenium\selenium-manager\4.15.0\selenium-manager-4.15.0.jar;D:\apache-maven-3.6.1\mav-repo\org\seleniumhq\selenium\selenium-devtools-v117\4.15.0\selenium-devtools-v117-4.15.0.jar;D:\apache-maven-3.6.1\mav-repo\org\seleniumhq\selenium\selenium-devtools-v118\4.15.0\selenium-devtools-v118-4.15.0.jar;D:\apache-maven-3.6.1\mav-repo\org\seleniumhq\selenium\selenium-devtools-v119\4.15.0\selenium-devtools-v119-4.15.0.jar;D:\apache-maven-3.6.1\mav-repo\org\seleniumhq\selenium\selenium-devtools-v85\4.15.0\selenium-devtools-v85-4.15.0.jar;D:\apache-maven-3.6.1\mav-repo\org\seleniumhq\selenium\selenium-edge-driver\4.15.0\selenium-edge-driver-4.15.0.jar;D:\apache-maven-3.6.1\mav-repo\org\seleniumhq\selenium\selenium-firefox-driver\4.15.0\selenium-firefox-driver-4.15.0.jar;D:\apache-maven-3.6.1\mav-repo\org\seleniumhq\selenium\selenium-http\4.15.0\selenium-http-4.15.0.jar;D:\apache-maven-3.6.1\mav-repo\dev\failsafe\failsafe\3.3.2\failsafe-3.3.2.jar;D:\apache-maven-3.6.1\mav-repo\org\seleniumhq\selenium\selenium-ie-driver\4.15.0\selenium-ie-driver-4.15.0.jar;D:\apache-maven-3.6.1\mav-repo\org\seleniumhq\selenium\selenium-remote-driver\4.15.0\selenium-remote-driver-4.15.0.jar;D:\apache-maven-3.6.1\mav-repo\com\google\guava\guava\32.1.2-jre\guava-32.1.2-jre.jar;D:\apache-maven-3.6.1\mav-repo\com\google\guava\failureaccess\1.0.1\failureaccess-1.0.1.jar;D:\apache-maven-3.6.1\mav-repo\com\google\guava\listenablefuture\9999.0-empty-to-avoid-conflict-with-guava\listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar;D:\apache-maven-3.6.1\mav-repo\com\google\code\findbugs\jsr305\3.0.2\jsr305-3.0.2.jar;D:\apache-maven-3.6.1\mav-repo\org\checkerframework\checker-qual\3.33.0\checker-qual-3.33.0.jar;D:\apache-maven-3.6.1\mav-repo\com\google\errorprone\error_prone_annotations\2.18.0\error_prone_annotations-2.18.0.jar;D:\apache-maven-3.6.1\mav-repo\com\google\j2objc\j2objc-annotations\2.8\j2objc-annotations-2.8.jar;D:\apache-maven-3.6.1\mav-repo\io\opentelemetry\opentelemetry-api\1.31.0\opentelemetry-api-1.31.0.jar;D:\apache-maven-3.6.1\mav-repo\io\opentelemetry\opentelemetry-context\1.31.0\opentelemetry-context-1.31.0.jar;D:\apache-maven-3.6.1\mav-repo\io\opentelemetry\opentelemetry-exporter-logging\1.31.0\opentelemetry-exporter-logging-1.31.0.jar;D:\apache-maven-3.6.1\mav-repo\io\opentelemetry\opentelemetry-sdk-common\1.31.0\opentelemetry-sdk-common-1.31.0.jar;D:\apache-maven-3.6.1\mav-repo\io\opentelemetry\opentelemetry-sdk-extension-autoconfigure-spi\1.31.0\opentelemetry-sdk-extension-autoconfigure-spi-1.31.0.jar;D:\apache-maven-3.6.1\mav-repo\io\opentelemetry\opentelemetry-sdk-extension-autoconfigure\1.31.0\opentelemetry-sdk-extension-autoconfigure-1.31.0.jar;D:\apache-maven-3.6.1\mav-repo\io\opentelemetry\opentelemetry-api-events\1.31.0-alpha\opentelemetry-api-events-1.31.0-alpha.jar;D:\apache-maven-3.6.1\mav-repo\io\opentelemetry\opentelemetry-sdk-trace\1.31.0\opentelemetry-sdk-trace-1.31.0.jar;D:\apache-maven-3.6.1\mav-repo\io\opentelemetry\opentelemetry-sdk\1.31.0\opentelemetry-sdk-1.31.0.jar;D:\apache-maven-3.6.1\mav-repo\io\opentelemetry\opentelemetry-sdk-metrics\1.31.0\opentelemetry-sdk-metrics-1.31.0.jar;D:\apache-maven-3.6.1\mav-repo\io\opentelemetry\opentelemetry-extension-incubator\1.31.0-alpha\opentelemetry-extension-incubator-1.31.0-alpha.jar;D:\apache-maven-3.6.1\mav-repo\io\opentelemetry\opentelemetry-sdk-logs\1.31.0\opentelemetry-sdk-logs-1.31.0.jar;D:\apache-maven-3.6.1\mav-repo\io\opentelemetry\opentelemetry-semconv\1.28.0-alpha\opentelemetry-semconv-1.28.0-alpha.jar;D:\apache-maven-3.6.1\mav-repo\net\bytebuddy\byte-buddy\1.14.10\byte-buddy-1.14.10.jar;D:\apache-maven-3.6.1\mav-repo\org\seleniumhq\selenium\selenium-os\4.15.0\selenium-os-4.15.0.jar;D:\apache-maven-3.6.1\mav-repo\org\apache\commons\commons-exec\1.3\commons-exec-1.3.jar;D:\apache-maven-3.6.1\mav-repo\org\seleniumhq\selenium\selenium-safari-driver\4.15.0\selenium-safari-driver-4.15.0.jar;D:\apache-maven-3.6.1\mav-repo\org\seleniumhq\selenium\selenium-support\4.15.0\selenium-support-4.15.0.jar;D:\apache-maven-3.6.1\mav-repo\org\springframework\boot\spring-boot-starter-web\3.2.0\spring-boot-starter-web-3.2.0.jar;D:\apache-maven-3.6.1\mav-repo\org\springframework\boot\spring-boot-starter-json\3.2.0\spring-boot-starter-json-3.2.0.jar;D:\apache-maven-3.6.1\mav-repo\com\fasterxml\jackson\core\jackson-databind\2.15.3\jackson-databind-2.15.3.jar;D:\apache-maven-3.6.1\mav-repo\com\fasterxml\jackson\core\jackson-annotations\2.15.3\jackson-annotations-2.15.3.jar;D:\apache-maven-3.6.1\mav-repo\com\fasterxml\jackson\core\jackson-core\2.15.3\jackson-core-2.15.3.jar;D:\apache-maven-3.6.1\mav-repo\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.15.3\jackson-datatype-jdk8-2.15.3.jar;D:\apache-maven-3.6.1\mav-repo\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.15.3\jackson-datatype-jsr310-2.15.3.jar;D:\apache-maven-3.6.1\mav-repo\com\fasterxml\jackson\module\jackson-module-parameter-names\2.15.3\jackson-module-parameter-names-2.15.3.jar;D:\apache-maven-3.6.1\mav-repo\org\springframework\boot\spring-boot-starter-tomcat\3.2.0\spring-boot-starter-tomcat-3.2.0.jar;D:\apache-maven-3.6.1\mav-repo\org\apache\tomcat\embed\tomcat-embed-core\10.1.16\tomcat-embed-core-10.1.16.jar;D:\apache-maven-3.6.1\mav-repo\org\apache\tomcat\embed\tomcat-embed-el\10.1.16\tomcat-embed-el-10.1.16.jar;D:\apache-maven-3.6.1\mav-repo\org\apache\tomcat\embed\tomcat-embed-websocket\10.1.16\tomcat-embed-websocket-10.1.16.jar;D:\apache-maven-3.6.1\mav-repo\org\springframework\spring-web\6.1.1\spring-web-6.1.1.jar;D:\apache-maven-3.6.1\mav-repo\org\springframework\spring-beans\6.1.1\spring-beans-6.1.1.jar;D:\apache-maven-3.6.1\mav-repo\io\micrometer\micrometer-observation\1.12.0\micrometer-observation-1.12.0.jar;D:\apache-maven-3.6.1\mav-repo\io\micrometer\micrometer-commons\1.12.0\micrometer-commons-1.12.0.jar;D:\apache-maven-3.6.1\mav-repo\org\springframework\spring-webmvc\6.1.1\spring-webmvc-6.1.1.jar;D:\apache-maven-3.6.1\mav-repo\org\springframework\spring-aop\6.1.1\spring-aop-6.1.1.jar;D:\apache-maven-3.6.1\mav-repo\org\springframework\spring-expression\6.1.1\spring-expression-6.1.1.jar;D:\apache-maven-3.6.1\mav-repo\org\projectlombok\lombok\1.18.30\lombok-1.18.30.jar;D:\apache-maven-3.6.1\mav-repo\com\mysql\mysql-connector-j\8.1.0\mysql-connector-j-8.1.0.jar;D:\apache-maven-3.6.1\mav-repo\us\codecraft\webmagic-core\0.8.0\webmagic-core-0.8.0.jar;D:\apache-maven-3.6.1\mav-repo\us\codecraft\xsoup\0.3.6\xsoup-0.3.6.jar;D:\apache-maven-3.6.1\mav-repo\org\apache\commons\commons-collections4\4.4\commons-collections4-4.4.jar;D:\apache-maven-3.6.1\mav-repo\commons-io\commons-io\2.11.0\commons-io-2.11.0.jar;D:\apache-maven-3.6.1\mav-repo\com\jayway\jsonpath\json-path\2.8.0\json-path-2.8.0.jar;D:\apache-maven-3.6.1\mav-repo\com\alibaba\fastjson\2.0.19.graal\fastjson-2.0.19.graal.jar;D:\apache-maven-3.6.1\mav-repo\com\alibaba\fastjson2\fastjson2-extension\2.0.19.graal\fastjson2-extension-2.0.19.graal.jar;D:\apache-maven-3.6.1\mav-repo\com\alibaba\fastjson2\fastjson2\2.0.19.graal\fastjson2-2.0.19.graal.jar;D:\apache-maven-3.6.1\mav-repo\us\codecraft\webmagic-selenium\0.8.0\webmagic-selenium-0.8.0.jar;D:\apache-maven-3.6.1\mav-repo\com\github\detro\phantomjsdriver\1.2.0\phantomjsdriver-1.2.0.jar;D:\apache-maven-3.6.1\mav-repo\us\codecraft\webmagic-extension\0.8.0\webmagic-extension-0.8.0.jar;D:\apache-maven-3.6.1\mav-repo\redis\clients\jedis\5.0.2\jedis-5.0.2.jar;D:\apache-maven-3.6.1\mav-repo\org\apache\commons\commons-pool2\2.12.0\commons-pool2-2.12.0.jar;D:\apache-maven-3.6.1\mav-repo\org\json\json\20231013\json-20231013.jar;D:\apache-maven-3.6.1\mav-repo\org\jsoup\jsoup\1.17.2\jsoup-1.17.2.jar;D:\apache-maven-3.6.1\mav-repo\net\minidev\json-smart\2.5.0\json-smart-2.5.0.jar;D:\apache-maven-3.6.1\mav-repo\net\minidev\accessors-smart\2.5.0\accessors-smart-2.5.0.jar;D:\apache-maven-3.6.1\mav-repo\org\ow2\asm\asm\9.3\asm-9.3.jar;D:\apache-maven-3.6.1\mav-repo\org\assertj\assertj-core\3.24.2\assertj-core-3.24.2.jar;D:\apache-maven-3.6.1\mav-repo\org\springframework\boot\spring-boot-configuration-processor\3.2.0\spring-boot-configuration-processor-3.2.0.jar;D:\apache-maven-3.6.1\mav-repo\org\apache\httpcomponents\httpclient\4.5.14\httpclient-4.5.14.jar;D:\apache-maven-3.6.1\mav-repo\org\apache\httpcomponents\httpcore\4.4.16\httpcore-4.4.16.jar;D:\apache-maven-3.6.1\mav-repo\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;D:\apache-maven-3.6.1\mav-repo\commons-codec\commons-codec\1.16.0\commons-codec-1.16.0.jar com.gzc.WebMagicStudy 15:08:09.076 [main] INFO us.codecraft.webmagic.Spider -- Spider www.weather.com.cn started! java.io.FileNotFoundException: \data\webmagic\webmagic-selenium\config.ini (系统找不到指定的路径。) at java.base/java.io.FileInputStream.open0(Native Method) at java.base/java.io.FileInputStream.open(FileInputStream.java:216) at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157) at java.base/java.io.FileInputStream.<init>(FileInputStream.java:111) at java.base/java.io.FileReader.<init>(FileReader.java:60) at us.codecraft.webmagic.downloader.selenium.WebDriverPool.configure(WebDriverPool.java:72) at us.codecraft.webmagic.downloader.selenium.WebDriverPool.get(WebDriverPool.java:197) at us.codecraft.webmagic.downloader.selenium.SeleniumDownloader.download(SeleniumDownloader.java:79) at us.codecraft.webmagic.Spider.processRequest(Spider.java:445) at us.codecraft.webmagic.Spider.access$000(Spider.java:65) at us.codecraft.webmagic.Spider$1.run(Spider.java:349) at us.codecraft.webmagic.thread.CountableThreadPool$1.run(CountableThreadPool.java:74) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840)
12-02
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值