欢迎来到老胡的算法解题思路,本文章主要使用的语言为python,使用的框架为scrapy,基于这一篇文章,我将为你介绍scrapy的基本操作,以及实际应用,喜欢的朋友可以关注一下,下次更新不迷路!
目录
前言
scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
一、scrapy的安装和配置环境变量
安装代码
pip install scrapy
安装成功后在配置环境变量处用对应路径配置环境变量(下图是我配置的我的路径)
二、创建项目
进入想要创建项目的文件夹下执行创建文件代码(scrapy startproject 项目名)
注意:项目名不能用数字开头,也不能包含中文
scrapy startproject scrapy_test
创建成功时显示的代码如下,并且对应文件目录下成功创建项目
New Scrapy project 'scrapy_test', using template directory 'D:\python\lib\site-packages\scrapy\templates\project', created in:
D:\python\爬虫\scrapy_test
You can start your first spider with:
cd scrapy_test
scrapy genspider example example.com
三、创建爬虫文件
3.1创建爬虫文件
1.进入对应文件夹中创建爬虫文件(在项目名/项目名/spiders)
2.创建代码(scrapy genspider 爬虫文件名 要爬取的网页)
注意:一般情况下要爬取的网页不需要添加http协议,因为起始url会自动拼接上导致要爬取的网页路径错误,出错时可以修改起始url地址。
scrapy genspider scrapy_test1 www.baidu.com
创建成功后对应的文件代码以及代码分析
import urllib.request
import requests
import scrapy
class ScrapyTest1Spider(scrapy.Spider):
# 爬虫名字,一般用于运行爬虫的时候,使用的值
name = 'scrapy_test1'
# 允许访问的域名
allowed_domains = ['www.baidu.com']
# 起始的url地址,第一次要访问的域名,它的值是
# 在允许访问的域名前添加http协议和在它后面添加斜线
start_urls = ['http://www.baidu.com/']
# 执行了起始url之后执行的方法,方法中返回的response就是返回的那个对象
# 相当于response=urllib.request.urlopen()
# 相当于response=requests.get()
def parse(self, response):
pass
3.2 scrapy项目结构
项目名称
项目名字
spiders文件夹
init
自定义的爬虫文件 核心功能文件
init
items 定义数据结构的地方,爬取的数据都包含啥
middleware 中间件 代理
pipelines 管道 用来处理下载的数据
settings 配置文件 robots协议 ua定义等
四、运行爬虫代码
对应路径下运行代码(scrapy crawl 爬虫的名字)
scrapy crawl scrapy_test1
注意:爬取失败(在爬虫文件对应的settings.py下修改为不遵守君子协议)
ROBOTSTXT_OBEY = False
查看百度君子协议(
https://www.baidu.com/robots.txt
)
五、scrapy原理