运行环境:
Windows10 企业版
1安装scrapy
打开cmd输入pip install scrapy并且回车
2创建scrapy项目
在cmd中切换到指定目录,输入scrapy startproject <项目名 > 回车
3创建爬虫
在cmd中输入 scrapy genspider <项目名> <被爬取的url起始链接>
这里采用被爬取的链接是一个供学习者联系爬取用的网址:http://lab.scrapyd.cn
(此处名称出了一点小差错,应该是scrapyd,少打了一个 s之后已经更改过了)
4打开编译器(pychram)
打开刚才选定的路径下的文件可看到已经创建好的项目。
5编辑scrapyd.py文件(爬虫文件)
6修改item.py文件
代码如下:
import scrapy
class ScrapydemoItem(scrapy.Item): #该类继承父类scrapy.Item
# name = scrapy.Field()
# ↓定义属性
tag = scrapy.Field()
cont = scrapy.Field()
7此时再配置修改scrapy.py文件(配置爬虫) ![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2f8cf89e5719f7693a2176078c796bb1.png)
代码如下:
import scrapy
from scrapydemo.items import ScrapydemoItem
class ScrapydSpider(scrapy.Spider):
name = 'scrapyd' #爬虫自己的名字
# 所允许的域名
allowed_domains = ['lab.scrapyd.cn']
# 起始的url地址
start_urls = ['http://lab.scrapyd.cn/']
def parse(self, response):
# 爬名言
mingyan = response.css('div.quote')
# 实体化item类
item = ScrapydemoItem()
for i in mingyan:
item['cont'] = i.css('.text::text').extract_first()
tags = i.css('.tags .tag::text').extract()
item['tag'] = ','.join(tags)
yield item
# 翻页操作
next_page = response.css('li.next a::arrt(href)').extract_frist()
if next_page is not None:
# 加入到要请求的url中去
next_page = response.urljoin(next_page)
yield scrapy.Request(next_page, callback = self.parse)
# callback:完成后再次返回解析器 ↑
其中
def parse(self, response):
# 爬名言
mingyan = response.css('div.quote')
# 实体化item类
item = ScrapydemoItem()
for i in mingyan:
item['cont'] = i.css('.text::text').extract_first()
tags = i.css('.tags .tag::text').extract()
item['tag'] = ','.join(tags)
yield item
# 翻页操作
next_page = response.css('li.next a::arrt(href)').extract_frist()
if next_page is not None:
# 加入到要请求的url中去
next_page = response.urljoin(next_page)
yield scrapy.Request(next_page, callback = self.parse)
爬取依据是根据所要爬取网页内源码而选择出来的:
8配置运行文件
在scrapyd.py目录下创建名为“debug”的Python file
然后进行代码编写:
代码如下:
from scrapy.cmdline import execute
# execute('scrapy crawl 爬虫的名字')
execute('scrapy crawl scrapyd'.split())
9运行运行文件(debug)
ctrl + shift +F10运行运行文件,爬取结果如下图:
这样就用scrapy框架爬取到了一些没有robots协议约束的网站内的文字信息了。