高性能的数据解析,持久化存储,全栈数据的爬取,中间件,分布式
环境安装:
Linux:
pip3 install scrapy
Windows:
1. pip3 install wheel
2. 下载twisted http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
3. 进入下载目录,执行 pip3 install Twisted?17.1.0?cp35?cp35m?win_amd64.whl
4. pip3 install pywin32
5. pip3 install scrapy
基本使用
新建一个工程:
前提需要将Twisted?17.1.0?cp35?cp35m?win_amd64.whl
这个文件放在项目目录下
# 在终端中执行下面这个命令
scrapy startporject + “项目名”
进入项目
# 在终端中执行
cd + 项目名
创建一个爬虫文件:
# 在终端中执行:
scrapy genspider spiderName www.xxx.com
# 命令解析:
scrapy genspider 爬虫文件名 url
# 这个url是必写的,不写无法创建文件,可以随意些,最后在文件中修改
执行工程:
# 在终端中执行下面的命令:
scrapy crawl spiderName
# 执行命令scrapy crawl 加爬虫文件名
在sttings
文件中需要配置的:
settings.py:
- 不遵从robots协议
如果选择不遵循robots协议的就修改文件中的
ROBOTSTXT_OBEY = False # 将True改为False
- UA伪装
将UA伪装的数据加载文件中
- 指定日志输出的类型:
将 LOG_LEVEL = 'ERROR' 添加到配置文件中
爬虫文件中:
# -*- coding: utf-8 -*-
import scrapy
class SecondSpidersSpider(scrapy.Spider):
name = 'second_spiders'
#允许的域名
allowed_domains = ['www.123.com']
#起始的url列表:列表元素只可以是url
#作用:列表元素表示的url就会被进行请求发送
start_urls = ['http://duanziwang.com/category/%E7%BB%8F%E5%85%B8%E6%AE%B5%E5%AD%90/']
def parse(self, response):
all_data = []
article_list = response.xpath('/html/body/section/div/div/main/article')
for article in article_list:
# xpath在进行数据提取时,返回的不再是字符串而是一个Selector对象,想要的数据被包含在了该对象的data参数中
title = article.xpath('./div[1]/h1/a/text()').extract_first()
content = article.xpath('./div[2]//text()').extract()
content = ''.join(content)
dic = {
'title': title,
'content': content
}
all_data.append(dic)
return all_data # 将解析到的数据进行了返回
数据解析:
持久化存储
原文:https://www.cnblogs.com/zhufanyu/p/12006751.html