1 Star 5 Fork 8

1264644959 / blog

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
爬虫scrapy.md 4.66 KB
一键复制 编辑 原始数据 按行查看 历史
1264644959 提交于 2020-10-05 20:27 . commit

builtins.KeyError: 'd'

配置文件路径错误

image-20200904083724250

No module named '_sqlite3'

scrapy的execute命令

from scrapy.cmdline import execute
execute((['scrapy','crawl','mingyan','--nolog']))

常用配置

SCHEDULER = "scrapy_redis.scheduler.Scheduler" 调度器类
DUPEFILTER_CLASS = 'PolicyRobot.dupefilter.SplashAwareDupeFilter'指纹生成、去重类
SCHEDULER_PERSIST = True 持久化请求队列、指纹集合 可以暂停、恢复、爬取
SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.FifoQueue' 使用优先级调度请求队列
COOKIES_ENABLED = False cookie状态保持
SCHEDULER_IDLE_BEFORE_CLOSE = 0 最大空闲防止分布式爬虫因为等待而关闭

scrapy-redis配置文件

https://www.cnblogs.com/nixingguo/articles/7253200.html

scrapy-splash

问题3

ValueError: signal only works in main thread

参考 https://blog.csdn.net/qq_40279964/article/details/97030555?utm_medium=distribute.pc_relevant.none-task-blog-title-3&spm=1001.2101.3001.4242

本人使用 flask + scrapy 搭建爬虫简易测试接口

前端向后端传递 url 以及对应的 xpath 规则

搭建后进行测试出现上述问题

最后得出结论,访问接口,在其返回数据给前端之前,如果要开启爬虫程序,需要单独在一个进程之中运行

image-20200928155533421

问题2

Splash提供的Web页面输入网址无法渲染问题解决

思路提供 https://www.jianshu.com/p/72b0663f6dea

image-20200923084048159

image-20200923084106804

资源未正确加载,下面展示如何解决这个BUG

1、全局搜索 splash/resources.py文件

这里有两种处理方式,一种进入容器内部修改,一种在宿主机修改,容器修改经测试是暂时性的,删除容器后就失效了。主机修改永久有效

以root身份进入容器

docker exec -it --user root xxx /bin/bash
find / -name "resources.py"

image-20200929132935780

宿主机修改,搜索方式命令一样,需要修改的文件

只需要修改前两个红框内的文件

image-20200923111848818

2、修改容器对应的文件

这里需要主机和容器文件复制传递

docker cp containerid:xxx xxx

docker cp xxx containerid:xxx

需要修改的三个资源关键字,修改对应的 script 标签里的 src

使用的 cdn 网站 https://www.bootcdn.cn/

jquery-migrate jquery-migrate https://cdn.bootcdn.net/ajax/libs/jquery-migrate/1.2.1/jquery-migrate.js
jquery-1.11.1.min.js jquery https://cdn.bootcdn.net/ajax/libs/jquery/1.11.1/jquery.min.js
maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js twitter-bootstrap https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.2.0/js/bootstrap.min.js

3、重新启动容器

docker stop xxx
docker start xxx
docker run -d -p 8050:8050 --name xxx imagename 或者重新创建容器

4、验证

image-20200923112642796

可以正常显示了

5、上传到 docker hub

参考 https://blog.csdn.net/yuhui123999/article/details/82220093

https://hub.docker.com/ 创建自己的账户,并且创建一个开放仓库

image-20200923133820912

docker login #输入账户名和密码 docker commit my-splash woainizyl/xxx

docker images 查看自己生成的镜像

docker tag woainizyl/xxx woainizyl/dockerhub仓库名字

docker push wozinizyl/zh-splash

根据上面的图片可知已经上传成功了

拉镜像

docker pull woainizyl/zh-splash

问题4

splash添加cookie

问题1

docker查看容器的文件位置

docker inspect container_ID

images

北国的莽原简直是一个谜,黑色的森林直铺到更空旷的冻土荒原,这是一个谜。河流向北流去,不知所踪,这是同一个谜。一个人向森林走去,不知道为什么,这也是同一个谜。河边上有一块巨石,水下的沉木千年不腐,这还是同一个谜。空旷,孤独,白色的冰雪世界令人神往,这就是那个谜

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/super__man/blog.git
git@gitee.com:super__man/blog.git
super__man
blog
blog
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891