scrapy的使用

1.首先安装scrapy:pip install scrapy
2:scrapy依赖 twisted库(高性能异步网络访问响应式库)
3.响应式:模拟日常生活的事件(银行排队办业务),twisted库底层使用c实现,
windows必须有vs20xx开发环境,linux必须有gcc/g++,如果没有,可以下载编译好的库(https://www.lfd.uci.edu/~gohlke/pythonlibs/)
4.安装成功以后,命令行执行:
1.scrapy startproject 项目名(如:lab)
2.cd $项目名(使用上面起的项目名 如:lab)
3.scrapy genspider 爬虫名(例如:labscrapy)要爬的网站名(lab.scrapyd.cn)
4.scrapy crawl $爬虫名 #执行爬虫(如果提示win32api找不到,执行:pip install pypiwin32)(windows中会出现这种问题)
4.运行scrapy是在lunix终端中使用scrapy crawl 爬虫名(spiders下面的爬虫的name后面的)

目录结构
当执行scrapy startproject lab 将生成如下目录结构

(代表目录的层级)
lab

lab 项目创建的目录,注意:必须进入这个目录才能执行所有的scrapy命令

scrapy.cfg 配置文件
lab 源代码目录

items.py 用来进行数据对象化及数据清洗
pipelines.py 将数据存储到数据库
middlewares.py 中间件,用来设置User-Agent,以及使用模拟器等
settings.py` 配置文件
spiders 用来存储爬虫源码

进入lab > spiders文件夹,打开labscrapy.py,添加如下内容
import scrapy

class LabscrapySpider(scrapy.Spider):
name = ‘labscrapy’
allowed_domains = [‘lab.scrapyd.cn’]
start_urls = [‘http://lab.scrapyd.cn/’]

def parse(self, response):
    results = response.css("div.post")
    for item in results:
        print(item.css(".text::text").extract_first())
        print(item.css(".author::text").extract_first())

5.如何将数据传入pipelines进行存储
(1)在items.py中添加解析对象

import scrapy

class LabItem(scrapy.Item):
# define the fields for your item here like:
author = scrapy.Field() #字段
content = scrapy.Field()
(2)将解析结果存成解析对象
from lab import items
item = items.LabItem()
item[‘content’] = result.css(".text::text").extract_first()
item[‘author’] = result.css(".author::text").extract_first()
yield item 。。将解析结果

3.使用pipeline存入数据库
首先解开settings.py中的ITEM_PIPELINES的注释
在pipline中添加如下代码

import sqlite3

class LabPipeline(object):
def init(self):
对数据库不要初始化多次
self.conn = sqlite3.connect(“labscrapy.db”)

def process_item(self, item, spider):



    cursor = self.conn.cursor()
    使用三个引号防止转译
    sql = """insert into lab_list(author,content) values(?,?)"""
    params = (item['author'],item['content']) #sqlite3用tuple传递问号参数
    cursor.execute(sql,params)
    self.conn.commit()

首先打开navcat,首先创建一个新的数据库,打开一个模型
创建一个表lab_list,双击创建表的字段

你可能感兴趣的:(python,scrapy的安装及使用)