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 06 Python
Python实现身份证号码解析
Sep 01 Python
Python爬虫中urllib库的进阶学习
Jan 05 Python
pytorch: tensor类型的构建与相互转换实例
Jul 26 Python
Python3自动签到 定时任务 判断节假日的实例
Nov 13 Python
python匹配两个短语之间的字符实例
Dec 25 Python
Pandas中resample方法详解
Jul 02 Python
python实现集中式的病毒扫描功能详解
Jul 09 Python
Python监控服务器实用工具psutil使用解析
Dec 19 Python
Python 合并拼接字符串的方法
Jul 28 Python
Python全局变量与global关键字常见错误解决方案
Oct 05 Python
Python趣味挑战之给幼儿园弟弟生成1000道算术题
May 28 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
多数据表共用一个页的新闻发布
2006/10/09 PHP
php初学者写及时补给skype用户充话费的小程序
2008/11/02 PHP
PHP性能优化 产生高度优化代码
2011/07/22 PHP
jQuery EasyUI API 中文文档 - DateBox日期框
2011/10/15 PHP
php阿拉伯数字转中文人民币大写
2015/12/21 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
2017/03/16 PHP
JavaScript多线程的实现方法
2007/05/08 Javascript
浅谈如何实现easyui的datebox格式化
2016/06/12 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
Angular2 Service实现简单音乐播放器服务
2017/02/24 Javascript
详解webpack模块化管理和打包工具
2018/04/21 Javascript
angularjs性能优化的方法
2018/09/05 Javascript
Vuerouter的beforeEach与afterEach钩子函数的区别
2018/12/26 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
2019/05/21 Javascript
vue实现配置全局访问路径头(axios)
2019/11/01 Javascript
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
JavaScript实现商品评价五星好评
2020/11/30 Javascript
[02:56]DOTA2矮人直升机 英雄基础教程
2013/11/26 DOTA
[01:04:49]KG vs LGD 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python中查找excel某一列的重复数据 剔除之后打印
2013/02/10 Python
python list中append()与extend()用法分享
2013/03/24 Python
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
itchat接口使用示例
2017/10/23 Python
python通过Windows下远程控制Linux系统
2018/06/20 Python
python 重命名轴索引的方法
2018/11/10 Python
在Pycharm中修改文件默认打开方式的方法
2019/01/17 Python
pytorch 输出中间层特征的实例
2019/08/17 Python
Python selenium实现断言3种方法解析
2020/09/08 Python
全球地下的服装和态度:Slam Jam
2018/02/04 全球购物
小米俄罗斯授权商店:Xiaomi俄罗斯
2019/12/08 全球购物
星空联盟C# .net笔试题
2014/12/05 面试题
实习自我鉴定模板
2013/09/28 职场文书
初入社会应届生求职信
2013/11/18 职场文书
2015年安全生产月工作总结
2015/07/27 职场文书
高中运动会广播稿
2015/08/19 职场文书
会计工作自我鉴定范文
2019/06/21 职场文书