美文网首页
day75-分布式爬虫

day75-分布式爬虫

作者: barriers | 来源:发表于2019-03-01 20:08 被阅读0次

1分布式爬虫

在scrapy中获取响应的路由: response.url
分布式爬虫就是将多台机器组合起来,共同完成爬取任务,提高爬取效率。
在爬取时需要安装scrapy-redis库

pip install scrapy-redis

安装好后,需要对其进行设置;在scrapy项目的settings中的最后添加如下代码:

SCHEDULER = 'scrapy_redis.scheduler.Scheduler'
DUPEFILTER_CLASS = 'scrapy_redis.dupefilter.RFPDupeFilter'
# redis://user:pass@hostname:9001
REDIS_URL = 'redis://@10.7.153.176:6379' # 没有用户名就用内网ip

如果redis设置了用户名及密码就用第三句代码 redis://user:pass@hostname:9001;用户名、密码、内网ip及端口号;否则用第四句ip需要用内网ip。

2爬取配置流程

1.进入redis-server所在的文件夹;修改redis.conf中的bind内容为bind 0.0.0.0;
2.退出,重启cmd;cmd中输入redis-cli -h 127.0.0.1登陆redis;查看本机是否能连接本机;使用keys *查看所有信息
3.输入quit退出;windows下输入ipconfig查看本机ip;linux下输入ifconfig查看本机ip;
4.直接cmd中输入ping 10.7.187.112(内网ip);查看能否连接
5.cmd中输入redis-cli -h 10.7.187.150(服务器内网ip);查看是否能连接服务器;
6.退出
7.所有机器用同一套代码执行;scrapy crawl comic运行程序

3mysql语句优化

1.在查询及插入语句时,在select或者insert前面加explain可以对运行的sql语句过程起解释作用;能看清运行的流程。
2.对表格中的键起别名可以起到优化数据库的作用;能够提高数据库的查询速度
create index ix_manhua_detail_title on detail_manhua(title);起别名
create unique index ux_manhua_comic_id on manhua(comic_id);给漫画编号创建唯一性约束。
当服务器需要关闭外网端口时,在服务器的安全组中关闭。
原生sql与model区别:
model更符合面向对象的思维
每个数据库的语句有细微的差别,原生sql一般只针对某个数据库;model可以对应不同的数据库。

4代理池

代理ip的ip池
获取模块,存储模块,检测模块,接口模块
存储模块:存储抓取下来的代理,不重复,使用redis sorted set,有序集合
获取模块:定时抓取各代理网站代理
检测模块:检测代理是否有效并设置分数,检测链接设为目标链接
redis-cli中运行ZRANGE proxies 0 200 WITHSCORES - 查看添加的信息
服务器启动redis
tar xzvf redis-5.0.3.tar.gz
cd redis-5.0.3
sudo make install
redis-server
redis-cli
selenium中选择某个标签除了用By.CSS进行选择外;还可以用By.XPATH进行选择。

sublime = wait.until(EC.element_to_be_clickable((By.XPATH,
       '//div[@class="rotate-background"][1]')))
sublime.click()

login = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,
       '.header_login.hover a img')))
login.click()

相关文章

网友评论

      本文标题:day75-分布式爬虫

      本文链接:https://www.haomeiwen.com/subject/qxyjuqtx.html