前言

这里使用Scrapy框架,相关资料需自行百度。
注意,使用Scrapy框架,需要提前下载好第三方库 pip install xxxx

目标:

  1. 本地安装所需要的各种环境,按照自己需要的安装
  2. 创建Scrapy爬虫项目
  3. 爬取正确的数据
  4. 对爬取的数据进行格式转换
  5. 爬取的数据进行本地存储(存入txt文件中)

升级pip到最新版本

1
python -m pip install --upgrade pip

安装Scrapy框架所需第三方类库

1
pip install scrapy

新建一个目录,并通过命令在该目录下创建一个Scrapy爬虫项目 crawlerDemo

1
scrapy startproject crawlerDemo

找到该项目,导入到Pycharm中,表结构如下:

在spiders包下创建一个python文件,并敲入代码

  1. 我这里在spiders包内新建了一个py文件,myfirst.py,这个py文件名字随便起的,记住接下来代码中的爬虫name就行
  2. 敲入代码

这串代码,随便爬了一个小说网的某篇小说的其中一章(这篇文章没有记录翻页、下一页)
通过xpath,分析出规则,根据规则对网站数据进行提取(不懂xpath的可以先了解一下)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#coding:utf-8
import scrapy

class myclass(scrapy.Spider):
# 爬虫name, 运行项目所需的命令: scrapy crawl test
name ='test'
# 小说网页,固定写法
start_urls = ["http://book.zongheng.com/chapter/834310/55013410.html"]

def parse(self, response):
# 标题 title_txtbox
title = response.xpath("//div[@class='title_txtbox']/text()").extract()[0]
print(title)
# 内容 content
content = response.xpath("//div[@class='content']//text()").extract()
# 数组转字符串: String = "".join(arrary)
# 字符串清除空格: String.strip()
# 数组转字符串,并清空内容里的空格
content2 = "".join(content).strip()
print(content2)
# 写入fiction.txt,并存到D盘
self.file = open('D://fiction.txt', 'a', encoding='utf-8')
self.file.writelines(title+'\n'+ content2 +'\n')
self.file.close()

启动Scrapy爬虫项目

爬虫名在前面代码中有标记
name =’test’

Scrapy crawl 爬虫名

1
scrapy crawl test

常见异常

无法使用Scrapy命令。

bash: scrapy: command not found

原因:没用配置软连接,先看下/usr/bin路径下是否有Scrapy文件,没有就配置软连接
软连接配置:

1
ln -s /usr/local/python3/bin/scrapy /usr/bin/scrapy

未知命令crawl。

Unknown command: crawl
Use “scrapy” to see available commands

原因:缺少scrapy配置文件 scrapy.cfg,创建Scrapy项目时会带着这个scrapy.cfg文件,创建的路径去找一下

推荐插件

最后,分享几种常用的第三方插件库

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
#1.安装`Scrapy`框架(爬虫服务器安装)
pip install scrapy
#2.安装selenium插件(爬虫服务器安装)
pip install selenium
#3.安装simplejson插件(爬虫服务器安装)
pip install simplejson
#4.把文件第一行python改成python2
vi /usr/bin/yum
#5.跟上面一样修改第一行python改成python2
vi /usrbexec/urlgrabber-ext-down
#6.安装epel
yum -y install epel-release
#7. 安装redis插件
pip install scrapy_redis
#8.安装kafka依赖
pip install kafka-python
#9.安装redis模块
pip install redis
#10.安装DBUtils模块
pip install DBUtils
#11.安装pymysql模块
pip install pymysql
#12.安装schedule调度器模块
pip install schedule
#13.安装requests模块
pip install requests
#14.安装fake_useragent模块
pip install fake_useragent