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变量和数据类型详解
Feb 15 Python
python+pyqt实现12306图片验证效果
Oct 25 Python
python3使用smtplib实现发送邮件功能
May 22 Python
Django中的Model操作表的实现
Jul 24 Python
Python实现处理逆波兰表达式示例
Jul 30 Python
Python中正则表达式的用法总结
Feb 22 Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 Python
在python中,使用scatter绘制散点图的实例
Jul 03 Python
python中@property和property函数常见使用方法示例
Oct 21 Python
python 实现提取log文件中的关键句子,并进行统计分析
Dec 24 Python
Python底层封装实现方法详解
Jan 22 Python
Python&Matlab实现樱花的绘制
Apr 07 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在线生成ico文件的代码
2007/10/09 PHP
php版本的cron定时任务执行器使用实例
2014/08/19 PHP
Smarty使用自定义资源的方法
2015/08/08 PHP
PHP laravel中的多对多关系实例详解
2017/06/07 PHP
游戏人文件夹程序 ver 3.0
2006/07/14 Javascript
prototype Element学习笔记(篇二)
2008/10/26 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
2013/12/05 Javascript
JS提交form表单实例分析
2015/12/10 Javascript
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
Vue中封装input组件的实例详解
2017/10/17 Javascript
vscode 开发Vue项目的方法步骤
2018/11/25 Javascript
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
解决vue单页面应用打包后相对路径、绝对路径相关问题
2020/08/14 Javascript
[01:07:22]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG加赛
2014/05/26 DOTA
[02:05]2014DOTA2西雅图邀请赛 老队长全明星大猜想谁不服就按进显示器
2014/07/08 DOTA
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
2017/12/20 Python
Python unittest单元测试框架实现参数化
2020/04/29 Python
python2.7使用scapy发送syn实例
2020/05/05 Python
Python如何测试stdout输出
2020/08/10 Python
python文件排序的方法总结
2020/09/13 Python
Python制作运行进度条的实现效果(代码运行不无聊)
2021/02/24 Python
python实现学生通讯录管理系统
2021/02/25 Python
微信端html5页面调用分享接口示例
2018/03/14 HTML / CSS
Mamas & Papas沙特阿拉伯:英国最受欢迎的婴儿品牌
2017/11/20 全球购物
French Connection官网:女装、男装及家居用品
2019/03/18 全球购物
How to spawning asynchronous work in J2EE
2016/08/29 面试题
历史学专业毕业生求职信
2013/09/27 职场文书
秋天的怀念教学反思
2014/04/28 职场文书
幼儿园国庆节活动总结
2015/03/23 职场文书
毕业生登记表班级意见
2015/06/05 职场文书
消夏晚会主持词
2015/06/30 职场文书
红白喜事主持词
2015/07/06 职场文书
python Tkinter模块使用方法详解
2022/04/07 Python