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语言的优雅之处
Jul 04 Python
Python实现的一个找零钱的小程序代码分享
Aug 25 Python
Python类定义和类继承详解
May 08 Python
在Python程序中操作文件之isatty()方法的使用教程
May 24 Python
python matplotlib画图库学习绘制常用的图
Mar 19 Python
在linux系统下安装python librtmp包的实现方法
Jul 22 Python
python实现两个文件夹的同步
Aug 29 Python
Pytorch中的variable, tensor与numpy相互转化的方法
Oct 10 Python
Python 面向对象之封装、继承、多态操作实例分析
Nov 21 Python
使用Tkinter制作信息提示框
Feb 18 Python
Python HTMLTestRunner如何下载生成报告
Sep 04 Python
linux中nohup和后台运行进程查看及终止
Jun 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
图书管理程序(一)
2006/10/09 PHP
PHP代码保护--Zend Guard的使用详解
2013/06/03 PHP
PHP使用file_get_content设置头信息的方法
2016/02/14 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
thinkphp5+layui实现的分页样式示例
2019/10/08 PHP
JQuery下关于$.Ready()的分析
2009/12/13 Javascript
使用delegate方法为一个tr标签加一个链接
2014/06/27 Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
2014/09/06 Javascript
vue中路由参数传递可能会遇到的坑
2017/12/07 Javascript
vue 通过下拉框组件学习vue中的父子通讯
2017/12/19 Javascript
vue与vue-i18n结合实现后台数据的多语言切换方法
2018/03/08 Javascript
JavaScript变量声明var,let.const及区别浅析
2018/04/23 Javascript
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
2018/11/30 Javascript
Node.js JSON模块用法实例分析
2019/01/04 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
在vue项目中使用sass语法问题
2019/07/18 Javascript
[48:52]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第一局
2016/02/25 DOTA
[01:57]2018年度DOTA2最具潜力解说-完美盛典
2018/12/16 DOTA
python3简单实现微信爬虫
2015/04/09 Python
用Python的Django框架来制作一个RSS阅读器
2015/07/22 Python
Python文件操作,open读写文件,追加文本内容实例
2016/12/14 Python
python 自动重连wifi windows的方法
2018/12/18 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
2019/08/09 Python
python-numpy-指数分布实例详解
2019/12/07 Python
django使用graphql的实例
2020/09/02 Python
使用简单的CSS3属性实现炫酷读者墙效果
2014/01/08 HTML / CSS
日本快乐生活方式购物网站:Shop Japan
2018/07/17 全球购物
Arti-shopping中文官网:大型海外商品一站式直邮平台
2020/03/23 全球购物
《风筝》教学反思
2014/04/10 职场文书
大学生党员批评与自我批评
2014/09/28 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
办公室岗位职责
2015/02/04 职场文书
2016优秀员工先进事迹材料
2016/02/25 职场文书
Win10 Anaconda安装python-pcl
2022/04/29 Servers
MySQL GTID复制的具体使用
2022/05/20 MySQL
Linux在两个服务器直接传文件的操作方法
2022/08/05 Servers