linux入门教程:
史上最牛的Linux视频教程
一、安装mysql
安装mysql
参考:CentOS第一次安装MySQL的完整步骤
修改密码:解决MySQL8.0报错:Unknown system variable ‘validate_password_policy’安装图形界面
下载:wget http://dev.mysql.com/get/mysql-workbench-community-8.0.12-1.el7.x86_64.rpm
安装:sudo yum localinstall mysql-workbench-community-8.0.12-1.el7.x86_64.rpm
报错:缺少 proj
参考:在CentOS7上安装MySQL Workbench
二、数据库远程连接
创建远程连接用户
CREATE USER ‘test’@’%’ IDENTIFIED BY ‘123’;
GRANT ALL ON con_test.* TO ‘test’@’%’;- 局域网访问 mysql如何修改开启允许远程连接 3.
三、安装scrapy环境
下载anaconda安装包
下载——配置路径($sudo gedit /etc/profile
)——重启安装 scrapy
conda install scrapy
四、安装splash环境
由于splash依赖于docker,需要先安装docker
安装docker
sudo yum install docker
安装docker —— docker加速 —— docker启动 ——输入指令安装splash
sudo docker pull scrapinghub/splash
- 运行docker
sudo service docker start
- 运行splash
sudo docker run -p 8050:8050 scrapinghub/splash
- 验证splash运行情况,浏览器输入
http://localhost:8050
,成功 - 安装python库的 scrapy-splash
pip install scrapy-splash
问题
问题1:
- 描述:代码完全照书上来的,没报错,但也抓不下来数据
class BookspiderSpider(scrapy.Spider):
name = 'bookspider'
allowed_domains = ["search.jd.com"]
base_url = 'https://search.jd.com/Search?keyword=湖南文艺出版社&enc=utf-8&wq=湖南文艺出版社'
def star_requsts(self):
yield Request(self.base_url, callback=self.parse_urls, dont_filter=True)
......
- 症结:base_url的问题,后面self.base_url没用,所以抓不到数据
# 改
class BookspiderSpider(scrapy.Spider):
name = 'bookspider'
allowed_domains = ["search.jd.com"]
start_urls = ['https://search.jd.com/Search?keyword=湖南文艺出版社&enc=utf-8&wq=湖南文艺出版社']
def parse(self, response):
......
- 延伸:
看看python类中的全局变量
问题2
- 描述:利用splash 抓取JD,只能抓到30个数据(应该有60个),说明动态渲染出了问题
怀疑:
- ① splash 出了问题。(利用requests + splash测试)可能性小
- ② scrapy-splash 出了问题。 (利用scrapy_splash.SplashRequest测试)可能性小
- ③ setting、spider 代码出了问题?
解决过程:抓了3页,发现只有30个Item,就算splash配置错了,也应该是90个Item呀,推测页面拼接出了问题。
- 症结:spider网页拼接出错
# 修改后
# -*- coding: utf-8 -*-
import scrapy
from scrapy_splash import SplashRequest
lua_script = '''
function main(splash)
splash:go(splash.args.url)
splash:wait(2)
splash:runjs("document.getElementsByClassName('page clearfix')[0].scrollIntoView(true)")
splash:wait(2)
return splash:html()
end
'''
class JDBookSpider(scrapy.Spider):
name = 'jd_book'
allowed_domains = ["search.jd.com"]
start_urls = ['https://search.jd.com/Search?keyword=湖南文艺出版社&enc=utf-8&wq=湖南文艺出版社']
def start_requests(self):
url0 ='https://search.jd.com/Search?keyword=湖南文艺出版社&enc=utf-8&wq=湖南文艺出版社&page='
for i in range(1):
url = url0 + str(2*i+1)
yield SplashRequest(url,
endpoint='execute',
args={'lua_source':lua_script},
cache_args=['lua_source'],
)
def parse(self, response):
for sel in response.css('ul.gl-warp.clearfix >li.gl-item'):
yield {
'name':sel.css('div.p-name').xpath('string(.//em)').extract_first(),
'price':sel.css('div.p-price i::text').extract_first(),
}
mysql数据库
其他
- centos安装工具不是apt-get,而是yum
- 安装vim