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中的列表生成式与生成器学习教程
Mar 13 Python
python字符串的常用操作方法小结
May 21 Python
详解Python使用tensorflow入门指南
Feb 09 Python
python放大图片和画方格实现算法
Mar 30 Python
Python对HTML转义字符进行反转义的实现方法
Apr 28 Python
Python3实现定时任务的四种方式
Jun 03 Python
Python使用import导入本地脚本及导入模块的技巧总结
Aug 07 Python
python的命名规则知识点总结
Oct 04 Python
opencv-python 提取sift特征并匹配的实例
Dec 09 Python
手把手教你进行Python虚拟环境配置教程
Feb 03 Python
Python使用sys.exc_info()方法获取异常信息
Jul 23 Python
Python 第三方库 openpyxl 的安装过程
Dec 24 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获取服务器端mac和客户端mac的地址支持WIN/LINUX
2014/05/15 PHP
Codeigniter操作数据库表的优化写法总结
2014/06/12 PHP
php实现通过cookie换肤的方法
2015/07/13 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
2016/11/03 PHP
php smtp实现发送邮件功能
2017/06/22 PHP
PHP实现的AES 128位加密算法示例
2019/09/16 PHP
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
使用jQuery中的wrap()函数操作HTML元素的教程
2016/05/24 Javascript
JS实用的带停顿的逐行文本循环滚动效果实例
2016/11/23 Javascript
jquery实现刷新随机变化样式特效(tag标签样式)
2017/02/03 Javascript
js实现简易垂直滚动条
2017/02/22 Javascript
Vue表单验证插件的制作过程
2017/04/01 Javascript
socket.io学习教程之基本应用(二)
2017/04/29 Javascript
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
Mac下通过brew安装指定版本的nodejs教程
2018/05/17 NodeJs
解决jquery的ajax调取后端数据成功却渲染失败的问题
2018/08/08 jQuery
js实现for循环跳过undefined值示例
2019/07/02 Javascript
详解JS函数防抖
2020/06/05 Javascript
Python实现的一个找零钱的小程序代码分享
2014/08/25 Python
Python中暂存上传图片的方法
2015/02/18 Python
Python中的with...as用法介绍
2015/05/28 Python
Pandas删除数据的几种情况(小结)
2019/06/21 Python
Python OpenCV 使用滑动条来调整函数参数的方法
2019/07/08 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
2020/04/07 Python
python小白学习包管理器pip安装
2020/06/09 Python
python 5个顶级异步框架推荐
2020/09/09 Python
官方授权图形T恤和服装:Fifth Sun
2019/06/12 全球购物
KELLER SPORTS荷兰:在线订购最好的运动产品
2020/10/13 全球购物
煤矿开采专业求职信
2014/07/08 职场文书
2014年客服工作总结与计划
2014/12/09 职场文书
2015年新农村建设指导员工作总结
2015/07/24 职场文书
婚礼双方父亲致辞
2015/07/27 职场文书
2016年敬老月活动总结
2016/04/05 职场文书
Nginx解决403 forbidden的完整步骤
2021/04/01 Servers
Java 数组内置函数toArray详解
2021/06/28 Java/Android
MySQL 原理与优化之Limit 查询优化
2022/08/14 MySQL