注意:
使用前请安装cmd、pycharm、anaconda
Anaconda安装教程https://blog.csdn.net/u012318074/article/details/77075209
一、创建一个scrapy项目
在开始爬取之前,我们首先要创建一个scrapy项目,在命令行输入一下命令即可创建
scrapy startproject mingyan
如果你输入命令之后,出现了下面的显示:二、创建一个scrapy蜘蛛文件
上面我们已经成功创建了一个scrapy 项目,那我们该在哪里写我们的蜘蛛呢?
在spiders目录下面,这一个scrapy 文档,我们就来创造一只scrapy蜘蛛
创建的肯定是我们的.py文件。怎么创建呢?你可以用记事本,也可以用pycharm,建议使用pycharm因为方便!首先你需要把你创建的项目mingyan2在pycharm里面打开,然后右键点击spiders,选中New再选中python File即可,如下图:
文件名的话你随意,尽量见名知意,这里我就取名为:mingyan_spider.py (保存在mingyan2/spiders目录下),再看一下创建好文件后的目录结构:
到这里的话我们已经成功创建了一个scrapy蜘蛛文件,我们要爬取哪个网站、爬取这个网站的数据,统统在这个文件里面编写
三、编写第一个蜘蛛那我们怎么提取我们想要的数据呢?比如我想要一个文章的标题、内容、图片,这些的话就可以我们自己定义方法提取了,后面我们慢慢涉及!这里先简单的来!
好了,我们先来看看蜘蛛项目:(*解析与提示已经在里面)
1.scrapy css模块
用Scrapy框架写爬虫,简单来说爬虫就是从网上抓取网页,解析网页,然后进行数据的存储与分析,将从网页的解析到数据的转换存储。
CSS选择器
CSS规则由两个主要的部分构成:选择器,以及一条或多条声明
Selector {declaration1; declearation2;…declearationN } |
CSS常用的选择器
.class |
.intro |
选择class='intro'的所有元素 |
#id |
#firstname |
选择id='firstname'的所有元素 |
* |
* |
选择所有元素 |
Element |
P |
选择所有<p>元素 |
Element,element |
Div,p |
选择所有<div>元素和所有<p>元素 |
Element,element |
Div p |
选择<div>元素内部的所有p元素 |
[attribute] |
[target] |
选择带有target属性的所有元素 |
[attribute=value] |
[target=_blank] |
选择target="_blank"的所以元素 |
与Xpath相比较,CSS相对而言更加复杂
|
print Selector(text=body).css('class').extract() print(u'class 下的所有name节点') print Selector(text=body).css('class name').extract() # class 下的所有name节点
print Selector(text=body).css('class name').extract()[0] print(u'选择带有lang属性的所有元素') print Selector(text=body).css('[lang]').extract() # 选择带有lang属性的所有元素 |
2.网站内容分析
2.写代码
import scrapy class itemSpider(scrapy.Spider): name = 'itemSpider' start_urls = ['https://xuangubao.cn/'] def parse(self, response): data = response.css('div.news-item-main') # 得到一个选择列表 for v in data: text = v.css('span.bullish-and-bear.bullish::text').extract() # 提取数据 title = v.css('.news-item-title::text').extract() # 提取题目 texta = v.css('.news-item-detail-summary normal-pre-text::text').extract()#新闻内容 textb = v.css('.stock-group-item-name::text').extract()#股票名字 if text is not None: tag = v.css('.news-item-intro-topic::text').extract()#标签 str = ' '.join(tag)#标签 text2 = ' '.join(texta)#新闻内容 text3 = ' '.join(textb)#股票名字 text4 = ' '.join(text)# 提取数据 title1 = ' '.join(title)# 提取题目 fileName = '%s.txt' %text # 爬取的内容存入文件,文件名为:数据名字.txt f = open(fileName, "a+") # 追加写入文件 f.write(title1) # 写入题目 f.write('\n') f.write(text4) # 写入数据 f.write('\n') f.write(text2) #新闻内容 f.write('\n') f.write(text3) # 写入股票名字 f.write('\n') f.write(str) f.write( '\n----------------------------------------------------------------------------------------------------------------------\n') f.close() # 关闭文件操作
四、运行蜘蛛
输入以上命令便可以运行蜘蛛了!这里要重点提醒一下,我们一定要进入:itemSpider 这个目录,也就是我们创建的蜘蛛项目目录,以上命令才有效!还有 crawl 后面跟的是你类里面定义的蜘蛛名,也就是:name,并不是项目名、也不是类名,这些细节希注意!
scrapy craw itemSpider
命令行输出了什么?通过上面命令,命令行输出与了一下信息:
五、运行结果
可以看到以下txt文件和里面内容: