Python Scrapy框架第一个入门程序示例


Posted in Python onFebruary 05, 2020

本文实例讲述了python Scrapy框架第一个入门程序。分享给大家供大家参考,具体如下:

首先创建项目:

scrappy start project maitian

第二步: 明确要抓取的字段items.py

import scrapy
class MaitianItem(scrapy.Item):
  # define the fields for your item here like:
  # name = scrapy.Field()
  title = scrapy.Field()
  price = scrapy.Field()
  area = scrapy.Field()
  district = scrapy.Field()

第三步: 在spider目录下创建爬虫文件: zufang_spider.py

2.1 创建一个类,并继承scrapy的一个子类: scrapy.Spider

2.2 自定义爬取名, name="" 后面运行框架需要用到;

2.3 定义爬取目标网址

2.4 定义scrapy的方法

下面是简单项目:

import scrapy
from maitian.items import MaitianItem
class MaitianSpider(scrapy.Spider):
  name = "zufang"
  start_urls = ['http://bj.maitian.cn/zfall/PG1']
  def parse(self, response):
    for zufang_itme in response.xpath('//div[@class="list_title"]'):
      yield {
        'title': zufang_itme.xpath('./h1/a/text()').extract_first().strip(),
        'price': zufang_itme.xpath('./div[@class="the_price"]/ol/strong/span/text()').extract_first().strip(),
        'area': zufang_itme.xpath('./p/span/text()').extract_first().replace('?', '').strip(),
        'district': zufang_itme.xpath('./p//text()').re(r'昌平|朝阳|东城|大兴|丰台|海淀|石景山|顺义|通州|西城')[0],
      }
    next_page_url = response.xpath(
      '//div[@id="paging"]/a[@class="down_page"]/@href').extract_first()
    if next_page_url is not None:
      yield scrapy.Request(response.urljoin(next_page_url))

第四步: 在settings.py文件中设置数据保存到数据库

.
.
.
ITEM_PIPELINES = {'maitian.pipelines.MaitianPipeline': 300,}
MONGODB_HOST = '127.0.0.1'
MONGODB_PORT = 27017
MONGODB_DBNAME = 'maitian'
MONGODB_DOCNAME = 'zufang'

第五步: 通过管道pipelines.py 连接上面的操作

import pymongo
from scrapy.conf import settings
class MaitianPipeline(object):
  def __init__(self):
    host = settings['MONGODB_HOST']
    port = settings['MONGODB_PORT']
    db_name = settings['MONGODB_DBNAME']
    client = pymongo.MongoClient(host=host, port=port)
    db = client[db_name]
    self.post = db[settings['MONGODB_DOCNAME']]
  def process_item(self, item, spider):
    zufang = dict(item)
    self.post.insert(zufang)
    return item

其中 middlewares.py 文件暂不处理

以上简单的scrapy爬虫项目搭建完毕了

更多相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家基于Scrapy框架的Python程序设计有所帮助。

Python 相关文章推荐
Python常用正则表达式符号浅析
Aug 13 Python
Python函数嵌套实例
Sep 23 Python
详解Python中的Descriptor描述符类
Jun 14 Python
Python使用迭代器打印螺旋矩阵的思路及代码示例
Jul 02 Python
Django 生成登陆验证码代码分享
Dec 12 Python
python使用__slots__让你的代码更加节省内存
Sep 05 Python
python导入坐标点的具体操作
May 10 Python
python实现字符串和数字拼接
Mar 02 Python
Python如何避免文件同名产生覆盖
Jun 09 Python
python cv2.resize函数high和width注意事项说明
Jul 05 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
Jan 29 Python
基于python实现银行管理系统
Apr 20 Python
python lambda函数及三个常用的高阶函数
Feb 05 #Python
Python 3.8 新功能大揭秘【新手必学】
Feb 05 #Python
TensorFlow学习之分布式的TensorFlow运行环境
Feb 05 #Python
TensorFlow MNIST手写数据集的实现方法
Feb 05 #Python
tensorflow之并行读入数据详解
Feb 05 #Python
tensorflow mnist 数据加载实现并画图效果
Feb 05 #Python
tensorflow 自定义损失函数示例代码
Feb 05 #Python
You might like
php字符串截取中文截取2,单字节截取模式
2007/12/10 PHP
php 验证码(倾斜,正弦干扰线,黏贴,旋转)
2013/06/29 PHP
适用于抽奖程序、随机广告的PHP概率算法实例
2014/04/09 PHP
浅谈php错误提示及查错方法
2015/07/14 PHP
jQuery 操作XML入门
2008/12/25 Javascript
firefox firebug中文入门教程 脚本之家新年特别版
2010/01/02 Javascript
jquery.lazyload  实现图片延迟加载jquery插件
2010/02/06 Javascript
JS 事件绑定函数代码
2010/04/28 Javascript
用Jquery实现多级下拉框无刷新的联动
2010/12/22 Javascript
仅Firefox中链接A无法实现模拟点击以触发其默认行为
2011/07/31 Javascript
Jquery操作radio的简单实例
2014/01/06 Javascript
通过复制Table生成word和excel的javascript代码
2014/01/20 Javascript
jQuery学习笔记之总体架构
2014/06/03 Javascript
jquery中EasyUI实现同步树
2015/03/01 Javascript
Perl Substr()函数及函数的应用
2015/12/16 Javascript
JavaScript头像上传插件源码分享
2016/03/29 Javascript
Javascript中return的使用与闭包详解
2017/01/11 Javascript
javascript中递归的两种写法
2017/01/17 Javascript
vue2笔记 — vue-router路由懒加载的实现
2017/03/03 Javascript
vue-router 手势滑动触发返回功能
2018/09/30 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
2019/08/01 Javascript
Vue+element-ui添加自定义右键菜单的方法示例
2020/12/08 Vue.js
Python数据操作方法封装类实例
2017/06/23 Python
python实现名片管理系统
2018/11/29 Python
python读取目录下最新的文件夹方法
2018/12/24 Python
Python使用ctypes调用C/C++的方法
2019/01/29 Python
对于Python深浅拷贝的理解
2019/07/29 Python
Python3.7+tkinter实现查询界面功能
2019/12/24 Python
判断Threading.start新线程是否执行完毕的实例
2020/05/02 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
2020/12/11 Python
英国的一家创新礼品和小工具零售商:Menkind
2019/08/24 全球购物
高中打架检讨书
2014/02/13 职场文书
档案工作汇报材料
2014/08/21 职场文书
党员对照检查材料
2014/09/22 职场文书
寝室长工作失责检讨书
2014/10/06 职场文书
react 项目中引入图片的几种方式
2021/06/02 Javascript