Scrapy爬虫——创建第一个爬虫
一、演示的HTML页面
URL:http://python123.io/ws/demo.html
内容:
二、产生步骤
步骤1:建立一个Scrapy爬虫工程
桌面存在空文件夹Scrapy,cmd进入到Desktop\Scrapy中
输入“scrapy startproject python123demo”创建项目,名为python123demo。
创建后的文件夹内容:
其中,scrapy.cfg:部署Scrapy爬虫的配置文件,不需要用户修改
python123demo:框架的用户自定义Python代码
python123demo文件夹中的内容:
其中,_init_.py:初始化脚本,用户不需要编写
items.py:Items代码模板(继承类),一般不需要用户编写
middlewares.py:Middlewares代码模板(继承类),若用户需要扩展中间件功能,则编写
pipelines.py:Pipelines代码模板(继承类)
settings.py:Scrapy爬虫的配置文件,若要优化爬虫功能,则修改相应的配置项
spiders:Scrapy代码模板目录(继承类)
spiders文件中的内容:
其中,__init__.py:初始文件,无需修改
__pycache__:缓存目录,无需修改
步骤2:在工程中产生一个Scrapy爬虫
进入工程目录,输入命令:scrapy genspider demo python123.io产生爬虫
结果:在spiders文件夹下,产生了一个demo.py
注意:上述命令作用仅限于生成demo.py,也就是说,也可以手动生成demo.py
demo.py文件内容:
name = ‘demo’ #名字
allowed_domains = [‘python123.io’] #给的域名,只能爬取本域名以下的内容
start_urls = [‘http://python123.io/'\] #列表中的N个URL,就是爬取的N个初始页面
parse():用于处理响应,解析内容形成字典,发现新的URL爬取请求。
步骤3:配置产生的spider爬虫
用户修改demo.py,使之能访问URL,并爬取相应的内容。
本项目将返回的HTML页面存成文件
# -*- coding: utf-8 -*-
import scrapy
class DemoSpider(scrapy.Spider):
name = 'demo' #名字
#allowed_domains = ['python123.io'] #给的域名,只能爬取本域名以下的内容
start_urls = ['http://python123.io/ws/demo.html'] #列表中的N个URL,就是爬取的N个初始页面
def parse(self, response): #将返回对象response的内容,写到HTML文件中
fname=response.url.split('/')[-1] #提取的是文件名字demo.html
with open(fname,'wb') as f:
f.write(response.body)
sel .log('Saved file %s.'%name) #日志
输入“scrapy crawl demo”,运行爬虫
结果:在工程目录下,产生一个demo.html网页文件
三、完整版本代码
将下述代码升级
升级前:
name = 'demo' #名字
start_urls = ['http://python123.io/ws/demo.html'] #列表中的N个URL,就是爬取的N个初始页面
升级后:
name = 'demo' #名字
def start_requests(self):
urls=[
'http://python123.io/ws/demo.html'
]
for url in urls:
yield scrapy.Request(url=url,callback=self.parse)
还没有评论,来说两句吧...