【D】前言:linux安装mysql/scrapy环境

linux入门教程:
史上最牛的Linux视频教程

一、安装mysql


  1. 安装mysql

    参考:CentOS第一次安装MySQL的完整步骤
    修改密码:解决MySQL8.0报错:Unknown system variable ‘validate_password_policy’

  2. 安装图形界面
    下载: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

参考:Linux下使用图形化工具

二、数据库远程连接


  1. 创建远程连接用户
    CREATE USER ‘test’@’%’ IDENTIFIED BY ‘123’;
    GRANT ALL ON con_test.* TO ‘test’@’%’;

    参考:MySQL workbench创建用户与授权

    1. 局域网访问 mysql如何修改开启允许远程连接
    2. 3.

三、安装scrapy环境


  1. 下载anaconda安装包
    下载——配置路径($sudo gedit /etc/profile)——重启

    参考:anaconda在Linux下的安装

  2. 安装 scrapy conda install scrapy

四、安装splash环境


由于splash依赖于docker,需要先安装docker

  1. 安装docker sudo yum install docker
    安装docker —— docker加速 —— docker启动 ——输入指令

    参考:
    yum安装Docker及入门使用
    Docker 命令大全
    docker更换为国内镜像

  2. 安装splash sudo docker pull scrapinghub/splash

  3. 运行dockersudo service docker start
  4. 运行splash sudo docker run -p 8050:8050 scrapinghub/splash
  5. 验证splash运行情况,浏览器输入http://localhost:8050,成功
  6. 安装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数据库

其他


  1. centos安装工具不是apt-get,而是yum
  2. 安装vim

参考:
linux 下vim的使用(学习必看!!重要)
LINUX操作系统VIM的安装和配置

猜你喜欢

转载自blog.csdn.net/qq_41682050/article/details/81452192
今日推荐