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)

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值