分类 爬虫 中的文章

win10下安装splash

安装DOCKER Docker for windows 仅支持win10专业版,并且电脑需支持虚拟化技术。 其他版本的需安装Docker Toolbox 国内可以使用阿里云镜像来下载。 下载完成之后直接点击安装。 启动Docker 双击Docker QuickStart启动Docker Toolbox终端。 启动后出现错误,卡在了Finalize这一步…… 打开安装目录下start.sh文件,将84行的clear注释掉(clear->#clear)。再次启动Docker QuickStart。 安装Splash 执行命令: $ docker pull scrapinghub/splash 启动Splash $ sudo docker run -p 8050:8050 -p 5023:5023 scrapinghub/splash 验证 在浏览器输入:192.168.100:8050 显示splash页面……

阅读全文

在Scrapy使用splash爬取动态页面

在windwos中启动Docker Quickstart Terminal后运行splash: docker run -p 8050:8050 -p 8051:8051 scrapinghub/splash 表示:Splash现在在端口8050(http)和5023(telnet)上的192.168.99.100处可用。 启动后在浏览器中输入192.168.99.100:8050 验证是否启动成功。 在scrapy项目文件settings.py中添加: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 SPLASH_URL = 'http://192.168.99.100:8050/' # 开启Splash的两个下载中间件并调整HttpCompressionMiddleware的次序 DOWNLOADER_MIDDLEWARES = { 'scrapy_splash.SplashCookiesMiddleware': 723, 'scrapy_splash.SplashMiddleware': 725, 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810, } # 设置去重过滤器 DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter' # 用来支持cache_args(可选) SPIDER_MIDDLEWARES = { 'scrapy_splash.SplashDeduplicateArgsMiddleware': 100, } 在爬虫文件pider.py中添加 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 def start_requests(self): script = '''function main(splash) splash:set_viewport_size(1028, 10000) splash:go(splash.……

阅读全文

安装scrapy

环境 winpython3.6 pip install scrapy 发现在安装依赖twisted时出错,需要vc++14.0. 网上搜索发现需要下载安装visual studio等,太麻烦了。于是乎google到了Twisted-18.7.0-cp36-cp36m-win_amd64.whl。 pip install Twisted-18.7.0-cp36-cp36m-win_amd64 完成后继续 pip install scrapy 安装成功后,验证: In[1]:import scrapy In[2]:scrapy.version_info Out[2]: (1, 5, 1) ……

阅读全文

将scrapy爬到的内容存入sqlite数据库

这个方法需要手动创建数据库文件并将表建立好,否则程序运行会出错。 settings.py 1 2 3 4 5 6 # sqlite 配置 SQLITE_DB_NAME = 'Data.db' #数据库名称 SQLITE_TABLE_NAME = 'table' #表名称 ITEM_PIPELINES={ 'dirName.pipelines.Sqlite3Pipeline': 400, } pipelines.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 import sqlite3 class Sqlite3Pipeline(object): def __init__(self, sqlite_file, sqlite_table): self.sqlite_file = sqlite_file self.……

阅读全文