创建scrapy 项目框架

本文介绍了如何使用Scrapy创建一个爬虫项目,包括启动项目、生成spider、设置目录结构,并展示了项目的详细目录结构。在终端运行`scrapy crawl hangzhou --nolog`,爬取到了包含新闻标题和链接的数据。
摘要由CSDN通过智能技术生成
  1. 创建项目
    scrapy startproject project_name

  2. 创建spider
    cd project_name
    scrapy genspider 模块名 网址
    scrapy genspider hangzhou www.xxxx.com

  3. 目录结构
    ├── hangzhounews – 项目根目录
    │ ├── init.py
    │ ├── pycache --python运行临时文件 pyc
    │ │ ├── init.cpython-36.pyc
    │ │ └── settings.cpython-36.pyc
    │ ├── items.py – 用来定义爬取哪些内容 (类似Django中的models)
    │ ├── middlewares.py --中间件
    │ ├── pipelines.py --管道,用来处理爬取的数据
    │ ├── settings.py --配置文件
    │ └── spiders --自定义爬虫包
    │ ├── init.py
    │ ├── pycache
    │ │ └── init.cpython-36.pyc
    │ └── hangzhou.py --一个爬虫文件
    └── scrapy.cfg – 部署时候用的配置文件

class HangzhouSpider(scrapy.Spider):
    name = 'hangzhou'
    allowed_domains = ['hznews.hangzhou.com.cn']
    start_urls = ['http://hznews.hangzhou.com.cn/']

# 如果不重写start_requests方法 父类的方法会自动迭代start_urls生成一个生成器,每个元素为一个scrapy.Request()对象

    def start_requests(self):
        print('1,start request')
        for url in self.start_urls:
            # 生成一个Request对象,callback为None则表示,回调函数为parse
            print('2,生成Request对象')
            req = scrapy.Request(url,callback=None)

            # start_requests的返回值应该是一个可迭代对象。列表之类都可以,尽量使用yield关键字构造生成器
            print('3,生成器')
            yield req


    def parse(self, response):
        print('4,解析')
        print(response)

        # 类型为<class 'scrapy.selector.unified.SelectorList'>
        all_news = response.xpath('//td[@class="hzwNews_L_link"]/a')

        item = {}
        for news in all_news:
            # news 类型为Selector
            headline = news.xpath('.//text()').extract_first()
            href = news.xpath('.//@href').extract_first()
            item['headline'] = headline
            item['href'] = href
			print(item)
            yield item

注:

    SelectorList对象:可以看做Selector的列表集合。可迭代
    关键方法 extract()=getall()。extract_first() = get()
    extract()取出SelectorList中的Selector依次执行.get()方法。将结果放在列表中返回。
        def getall(self):
            return [x.get() for x in self]
        extract = getall()
        
    extract_first()取出SelectorList中的第一个Selector,返回Selector.get()。即返回第一个Selector的文本信息
        def get(self, default=None):
            for x in self:
                return x.get()
            else:
                return default
        extract_first = get
        
    Selector:
    关键方法
    get() = extract() 。getall() 
    extract()将Selector中的文本提取出来。返回值为str。
    getall() 将Selector中的文本提取出来。放在列表中。列表中只有一个元素

终端执行:scrapy crawl hangzhou --nolog
结果
1,start request
2,生成Request对象
3,生成器
4,解析
<200 http://hznews.hangzhou.com.cn/>
{‘headline’: ‘杭州构建"一心八射"交通网 1小时通勤圈来了’, ‘href’: ‘http://hznews.hangzhou.com.cn/chengshi/content/2018-10/29/content_7088441.htm’}
{‘headline’: ‘文一路隧道形成8个大小堵点 如何缓解?’, ‘href’: ‘http://hznews.hangzhou.com.cn/chengshi/content/2018-10/29/content_7088393.htm’}
{‘headline’: ‘杭州开启阳光常驻模式 早晚温差有点大’, ‘href’: ‘http://hznews.hangzhou.com.cn/chengshi/content/2018-10/29/content_7088317.htm’}
{‘headline’: ‘杭州发出国际级软件名城创建政策“大礼包”’, ‘href’: ‘http://hznews.hangzhou.com.cn/jingji/content/2018-10/29/content_7088345.htm’}
{‘headline’: ‘东站"乞讨奶奶"家有五层楼 存款超10万’, ‘href’: 。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
创建Scrapy项目的步骤如下: 1. **安装Scrapy**: 首先需要确保已经安装了Python环境。然后可以在命令行中输入以下命令来安装Scrapy: ``` pip install scrapy ``` 2. **创建项目**: 打开命令行界面,切换到你想存放项目的目录下,运行以下命令来创建一个新的Scrapy项目: ``` scrapy startproject your_project_name ``` 这里`your_project_name`是你给新项目起的名字。 3. **进入项目目录**: 切换到刚刚创建项目文件夹: ``` cd your_project_name ``` 4. **运行爬虫**: 在项目目录内,你可以开始创建爬虫。首先创建一个爬虫文件,例如命名为 `example_spider.py`: ``` touch example_spider.py ``` 然后打开并编辑这个文件。在里面编写爬取规则、解析规则等。Scrapy的文档中有详细的示例和指南,可以帮助你快速上手。 5. **配置爬虫**: 如果你需要自定义一些配置信息,可以修改项目的 `settings.py` 文件。在这个文件中,你可以设置代理、下载中间件、错误处理等选项。 6. **启动爬虫**: 在项目根目录中,启动你的爬虫: ``` scrapy crawl example_spider ``` 按照提示输入需要爬取的URL或者其他相关信息,然后观察日志查看爬虫执行情况。 7. **管理数据**: Scrapy会自动将爬取的数据存储在指定的位置,如 `items.json` 或 `items.csv` 等。你可以自定义存储格式或位置。 8. **调试与优化**: 在实际操作过程中,可能会遇到各种问题,如页面加载慢、反爬策略等。这时需要对爬虫进行调试,并根据需求进行优化。 通过以上步骤,你就可以成功地创建并运行一个基于Scrapy框架的网页爬虫项目了。记住查阅Scrapy官方文档获取更多详细信息和最佳实践。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值