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装饰器 免去调用父类构造函数的麻烦
May 18 Python
python使用win32com在百度空间插入html元素示例
Feb 20 Python
python实现多线程的方式及多条命令并发执行
Jun 07 Python
python批量读取txt文件为DataFrame的方法
Apr 03 Python
详解flask入门模板引擎
Jul 18 Python
对Python正则匹配IP、Url、Mail的方法详解
Dec 25 Python
python PyQt5/Pyside2 按钮右击菜单实例代码
Aug 17 Python
python操作gitlab API过程解析
Dec 27 Python
python报错: 'list' object has no attribute 'shape'的解决
Jul 15 Python
Python 添加文件注释和函数注释操作
Aug 09 Python
接口自动化多层嵌套json数据处理代码实例
Nov 20 Python
python3操作redis实现List列表实例
Aug 04 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模拟用户自动在qq空间发表文章的方法
2015/01/07 PHP
PHP基于单例模式实现的mysql类
2016/01/09 PHP
Laravel实现构造函数自动依赖注入的方法
2016/03/16 PHP
Javascript 刷新全集常用代码
2009/11/22 Javascript
jquery控制listbox中项的移动并排序的实现代码
2010/09/28 Javascript
jquery事件与函数的使用介绍
2013/09/29 Javascript
设置checkbox为只读(readOnly)的两种方式
2013/10/11 Javascript
用jQuery toggleClass 实现鼠标移上变色
2014/05/14 Javascript
JavaScript 基本概念
2015/01/20 Javascript
JavaScript中的分号插入机制详细介绍
2015/02/11 Javascript
JS组件Bootstrap实现图片轮播效果
2016/05/16 Javascript
Js 获取、判断浏览器版本信息的简单方法
2016/08/08 Javascript
Bootstrap3 图片(响应式图片&图片形状)
2017/01/04 Javascript
JS判断键盘是否按的回车键并触发指定按钮点击操作的方法
2017/02/13 Javascript
详解Vue.js之视图和数据的双向绑定(v-model)
2017/06/23 Javascript
用js屏蔽被http劫持的浮动广告实现方法
2017/08/10 Javascript
使用selenium抓取淘宝的商品信息实例
2018/02/06 Javascript
angularJS开发注意事项
2018/05/26 Javascript
js中int和string数据类型互相转化实例
2019/01/16 Javascript
vue项目中将element-ui table表格写成组件的实现代码
2019/06/12 Javascript
利用JavaScript的Map提升性能的方法详解
2019/08/14 Javascript
jQuery HTML设置内容和属性操作实例分析
2020/05/20 jQuery
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
element中Steps步骤条和Tabs标签页关联的解决
2020/12/08 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
2020/12/11 Vue.js
python 实现在无序数组中找到中位数方法
2020/03/03 Python
Matplotlib中rcParams使用方法
2021/01/05 Python
css3实现椭圆轨迹旋转的示例代码
2018/10/29 HTML / CSS
墨尔本最受欢迎的复古风格品牌:Princess Highway
2018/12/21 全球购物
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
医院后勤自我鉴定
2013/10/13 职场文书
生物制药专业自我鉴定
2014/02/19 职场文书
电子商务系毕业生自荐信
2014/05/29 职场文书
岗位说明书怎么写
2014/07/30 职场文书
趣味运动会开幕词
2015/01/28 职场文书
房地产公司工程部经理岗位职责
2015/04/09 职场文书