python爬虫之scrapy框架(一)
一、安装scrapy框架
这里我们还是通过pip install scrapy进行安装,如果遇到问题请大家百度解决;
二、我们先来说scrapy框架的命令行工具与简单爬虫的编码
1、打开命令行,输入scrapy
2、输入 scrapy startproject baidutieba 创建项目
然后你的本地就会出现有如下结构的文件:
**baidutieba
–baidutieba
—-spiders
——init.py
——(这里是要你编写的爬虫文件,a)在命令行输入 cd baidutieba; b)命令行输入scrapy genspider biadutieba tieba.baidu.com,就会创建baidutieba.py文件;
—-init.py
—-items.py(这个是你要对你的数据进行声明的文件)
—-pipelines.py(这个是你对你的数据进行清洗和存储的文件)
—-settings.py(这个是你对日志,数据库等文件的配置文件)
–scrapy.cfg**
我们打开文件,看一下都写了什么?
# -*- coding: utf-8 -*-
import scrapy
class BiadutiebaSpider(scrapy.Spider):
name = "biadutieba"
allowed_domains = ["tieba.baidu.com"]
start_urls = (
'http://www.tieba.baidu.com/',
)
def parse(self, response):
pass
稍等我们来编辑这个文件。
3、进行代码的编写
首先我们要搞清楚我们要爬取那些数据:
**(1)发帖人
(2)帖子内容
(3)发帖时间**
a)编写items文件
# -*- coding: utf-8 -*-
# Define here the models for your scraped items
#
# See documentation in:
# http://doc.scrapy.org/en/latest/topics/items.html
import scrapy
class BaidutiebaItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
POSTER = scrapy.Field()
CONTENT = scrapy.Field()
TIME = scrapy.Field()
b)编写baidutieba.py文件
这里我们就要对先前我们所要的数据进行筛选,这里我们要用到的神器就是scrapy shell
首先在命令航中输入 scrapy shell [URL],这里我输入scrapy shell http://tieba.baidu.com/p/4749854079
接着我们输入view (response)
这时,浏览器就会大打开这个链接的网页,这个网页上显示的只是scrapy能解析的网页,其他的AJAX和JS控制的代码,我们则无法加载;
在这里,我们就能对我们在baidutieba.py文件中的我们所需字段的xpath代码进行试验,看是否得到我们想要的:
response.xpath('//li[@class="d_name"]/a/text()').extract()
response.xpath('//div[@class="d_post_content_main "]/div/cc/div/text()').extract()
response.xpath('//div[@class="post-tail-wrap"]/span[4]/text()').extract()
然后我们来运行,我们的代码:
在命令行中输入cd baidutieba,将命令行转移到我们的爬虫文件夹中;
然后输入 scrapy list,查看爬虫列表;
接着输入 scrapy crawl baidutieba -o spider.csv
然后看图:
这样我们就顺利的爬下了我们所需的文件!
最后这个小爬虫的所有代码都在这:https://github.com/depers/Python-Reptile/tree/master/BDTB-scrapy