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基于递归算法实现的汉诺塔与Fibonacci数列示例
Apr 18 Python
Python利用公共键如何对字典列表进行排序详解
May 19 Python
实用自动化运维Python脚本分享
Jun 04 Python
python使用adbapi实现MySQL数据库的异步存储
Mar 19 Python
python使用Plotly绘图工具绘制柱状图
Apr 01 Python
Python3实现计算两个数组的交集算法示例
Apr 03 Python
Python3.5内置模块之random模块用法实例分析
Apr 26 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
Jan 25 Python
Python监听剪切板实现方法代码实例
Nov 11 Python
PyTorch预训练Bert模型的示例
Nov 17 Python
python 递归相关知识总结
Mar 03 Python
Python爬虫基础讲解之请求
May 13 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
叶罗丽:为什么大家对颜冰这对CP非常关心,却对金茉两人十分冷漠
2020/03/17 国漫
一个oracle+PHP的查询的例子
2006/10/09 PHP
用PHP的ob_start();控制您的浏览器cache!
2006/11/25 PHP
简单的php缓存类分享     php缓存机制
2014/01/22 PHP
详解php设置session(过期、失效、有效期)
2015/11/12 PHP
php封装的smartyBC类完整实例
2016/10/19 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
破解Session cookie的方法
2006/07/28 Javascript
javascript 关闭IE6、IE7
2009/06/01 Javascript
理解Javascript_09_Function与Object
2010/10/16 Javascript
使用 Node.js 做 Function Test实现方法
2013/10/25 Javascript
JavaScript 学习笔记之数据类型
2015/01/14 Javascript
php常见的页面跳转方法汇总
2015/04/15 Javascript
js简单实现Select互换数据的方法
2015/08/17 Javascript
javascript获取系统当前时间的方法
2015/11/19 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
2016/03/11 Javascript
jQuery简单实现上下,左右滑动的方法
2016/06/01 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
vue2.0 keep-alive最佳实践
2017/07/06 Javascript
JQuery EasyUI 结合ztrIee的后台页面开发实例
2017/09/01 jQuery
vue-router项目实战总结篇
2018/02/11 Javascript
Vue-CLI3.x 设置反向代理的方法
2018/12/06 Javascript
JS实现从对象获取对象中单个键值的方法示例
2019/06/05 Javascript
python错误处理详解
2014/09/28 Python
Python Django使用forms来实现评论功能
2016/08/17 Python
Python使用re模块实现信息筛选的方法
2018/04/29 Python
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
对python读写文件去重、RE、set的使用详解
2018/12/11 Python
如何运行.ipynb文件的图文讲解
2019/06/27 Python
详解win10下pytorch-gpu安装以及CUDA详细安装过程
2021/01/28 Python
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
2014/05/07 HTML / CSS
实列教程 一款基于jquery和css3的响应式二级导航菜单
2014/11/13 HTML / CSS
社团招新策划书
2014/02/04 职场文书
班主任寄语2016
2015/12/04 职场文书
2016年11月份红领巾广播稿
2015/12/21 职场文书