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时间模块datetime、time、calendar的使用方法
Jan 13 Python
python遍历一个目录,输出所有的文件名的实例
Apr 23 Python
Python常见字典内建函数用法示例
May 14 Python
matplotlib 输出保存指定尺寸的图片方法
May 24 Python
用Python读取几十万行文本数据
Dec 24 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
Mar 27 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
Sep 06 Python
Python多进程编程multiprocessing代码实例
Mar 12 Python
解决python对齐错误的方法
Jul 16 Python
python time()的实例用法
Nov 03 Python
selenium+超级鹰实现模拟登录12306
Jan 24 Python
MATLAB 全景图切割及盒图显示的实现步骤
May 14 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 将bmp图片转为jpg等其他任意格式的图片
2009/06/21 PHP
php数组中删除元素的实现代码
2012/06/22 PHP
神盾加密解密教程(一)PHP变量可用字符
2014/05/28 PHP
PHP 二维数组和三维数组的过滤
2016/03/16 PHP
eclipse php wamp配置教程
2016/06/30 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
2019/04/09 PHP
Javascript typeof 用法
2008/12/28 Javascript
jQuery开发者都需要知道的5个小技巧
2010/01/08 Javascript
js下通过getList函数实现分页效果的代码
2010/09/17 Javascript
javascript在myeclipse中报错的解决方法
2013/10/29 Javascript
jQuery获取和设置表单元素的方法
2014/02/14 Javascript
jQuery瀑布流插件Wookmark使用实例
2014/04/02 Javascript
深入理解JavaScript系列(27):设计模式之建造者模式详解
2015/03/03 Javascript
JavaScript实现对下拉列表值进行排序的方法
2015/07/15 Javascript
原生javascript实现的一个简单动画效果
2016/03/30 Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
2016/05/27 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
2016/10/05 Javascript
jQuery EasyUI之验证框validatebox实例详解
2017/04/10 jQuery
Vue2.0用 watch 观察 prop 变化(不触发)
2017/09/08 Javascript
微信小程序实现下载进度条的方法
2017/12/08 Javascript
Vue 实现双向绑定的四种方法
2018/03/16 Javascript
js 计算图片内点个数的示例代码
2019/04/04 Javascript
ES6数组与对象的解构赋值详解
2019/06/14 Javascript
Javascript文本框脚本实现方法解析
2020/10/30 Javascript
python检测lvs real server状态
2014/01/22 Python
Python 代码调试技巧示例代码
2020/08/11 Python
解决PDF 转图片时丢文字的一种可能方式
2021/03/04 Python
纯css3显示隐藏一个div特效的具体实现
2014/02/10 HTML / CSS
小米俄罗斯授权商店:Xiaomi俄罗斯
2019/12/08 全球购物
新郎新娘婚礼答谢词
2014/01/11 职场文书
警察群众路线对照检查材料思想汇报
2014/10/01 职场文书
2015年小学生新年寄语
2014/12/08 职场文书
人才市场接收函
2015/01/30 职场文书
公司的力量观后感
2015/06/05 职场文书
用Python将库打包发布到pypi
2021/04/13 Python
Java 在线考试云平台的实现
2021/11/23 Java/Android