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操作json数据的一个简单例子
Apr 17 Python
Python中Django框架利用url来控制登录的方法
Jul 25 Python
分析Python中解析构建数据知识
Jan 20 Python
解决Spyder中图片显示太小的问题
Apr 27 Python
python 重定向获取真实url的方法
May 11 Python
windows下pycharm安装、创建文件、配置默认模板
Jul 31 Python
Python 监测文件是否更新的方法
Jun 10 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
Mar 08 Python
python删除某个目录文件夹的方法
May 26 Python
Django 构建模板form表单的两种方法
Jun 14 Python
python如何提升爬虫效率
Sep 27 Python
5 分钟读懂Python 中的 Hook 钩子函数
Dec 09 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 多维数组的排序问题 根据二维数组中某个项排序
2011/11/09 PHP
php单态设计模式(单例模式)实例
2014/11/18 PHP
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
js给onclick赋值传参数的两种方法
2013/11/25 Javascript
Jquery中ajax方法data参数的用法小结
2014/02/12 Javascript
js中的hasOwnProperty和isPrototypeOf方法使用实例
2014/06/06 Javascript
轻松创建nodejs服务器(6):作出响应
2014/12/18 NodeJs
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(放大缩小)
2016/12/02 Javascript
jQuery得到多个值只能用取Class ,不能用取ID的方法
2016/12/04 Javascript
基于 Vue 的树形选择组件的示例代码
2017/08/18 Javascript
webpack4简单入门实例
2018/09/06 Javascript
vue自定义指令之面板拖拽的实现
2019/04/14 Javascript
手机浏览器唤起微信分享(JS)
2020/10/11 Javascript
微信小程序实现页面监听自定义组件的触发事件
2020/11/01 Javascript
js实现滚动条自动滚动
2020/12/13 Javascript
JavaScript基于SVG的图片切换效果实例代码
2020/12/15 Javascript
python 时间信息“2018-02-04 18:23:35“ 解析成字典形式的结果代码详解
2018/04/19 Python
判断python对象是否可调用的三种方式及其区别详解
2019/01/31 Python
下载官网python并安装的步骤详解
2019/10/12 Python
Python实现计算长方形面积(带参数函数demo)
2020/01/18 Python
浅谈python中频繁的print到底能浪费多长时间
2020/02/21 Python
完美解决keras保存好的model不能成功加载问题
2020/06/11 Python
python输入中文的实例方法
2020/09/14 Python
Django celery异步任务实现代码示例
2020/11/26 Python
eDreams澳大利亚:预订机票、酒店和度假产品
2017/04/19 全球购物
Lee牛仔裤澳大利亚官网:美国著名牛仔裤品牌
2017/09/02 全球购物
盖尔斯工厂店:GUESS Factory
2020/01/21 全球购物
JD Sports荷兰:英国领先的运动时尚零售商
2020/03/13 全球购物
六年级数学教学反思
2014/02/03 职场文书
夜不归宿检讨书
2014/02/25 职场文书
超市活动计划书
2014/04/24 职场文书
因身体原因离职的辞职信范文
2015/05/12 职场文书
2019七夕节祝福语36句,快来收藏吧
2019/08/06 职场文书
python实现股票历史数据可视化分析案例
2021/06/10 Python
一次Mysql update sql不当引起的生产故障记录
2022/04/01 MySQL