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中使用urllib2伪造HTTP报头的2个方法
Jul 07 Python
使用Python的Twisted框架编写简单的网络客户端
Apr 16 Python
深入解析Python中的集合类型操作符
Aug 19 Python
浅析PHP与Python进行数据交互
May 15 Python
python实现随机梯度下降法
Mar 24 Python
python 解压pkl文件的方法
Oct 25 Python
使用Python自动化破解自定义字体混淆信息的方法实例
Feb 13 Python
Django操作session 的方法
Mar 09 Python
Django中Aggregation聚合的基本使用方法
Jul 09 Python
python简单实现插入排序实例代码
Dec 16 Python
Python控制台输出俄罗斯方块的方法实例
Apr 17 Python
python 标准库原理与用法详解之os.path篇
Oct 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常量的详解
2013/06/09 PHP
Yii操作数据库实现动态获取表名的方法
2016/03/29 PHP
如何正确配置Nginx + PHP
2016/07/15 PHP
Zend Framework动作控制器用法示例
2016/12/09 PHP
PHP中的函数声明与使用详解
2017/05/27 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
2019/03/22 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
2019/03/22 PHP
JS与C#编码解码
2013/12/03 Javascript
基于NodeJS的前后端分离的思考与实践(二)模版探索
2014/09/26 NodeJs
jQuery中click事件的定义和用法
2014/12/20 Javascript
jQuery实现自定义事件的方法
2015/04/17 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
2015/09/28 Javascript
javascript实现下雪效果【实例代码】
2016/05/03 Javascript
JavaScript6 let 新语法优势介绍
2016/07/15 Javascript
jQuery中 $ 符号的冲突问题及解决方案
2016/11/04 Javascript
jQuery Validate 相关参数及常用的自定义验证规则
2017/03/06 Javascript
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
对Vue beforeRouteEnter 的next执行时机详解
2018/08/25 Javascript
jQuery实现简单日历效果
2020/07/05 jQuery
[05:41]2014DOTA2西雅图国际邀请赛 小组赛7月10日TOPPLAY
2014/07/10 DOTA
[02:22:36]《加油!DOTA》总决赛
2014/09/19 DOTA
Python的Django框架使用入门指引
2015/04/15 Python
在Python的struct模块中进行数据格式转换的方法
2015/06/17 Python
Python 基础教程之闭包的使用方法
2017/09/29 Python
Python机器学习之决策树算法
2017/12/22 Python
利用Python如何批量修改数据库执行Sql文件
2018/07/29 Python
用Python编写一个简单的CS架构后门的方法
2018/11/20 Python
python等待10秒执行下一命令的方法
2020/07/19 Python
Pycharm调试程序技巧小结
2020/08/08 Python
python中doctest库实例用法
2020/12/31 Python
印度尼西亚综合购物网站:Lazada印尼
2016/09/07 全球购物
总监职责范文
2013/11/09 职场文书
2014年教育培训工作总结
2014/12/08 职场文书
小学思想品德教学反思
2016/02/24 职场文书
写作指导:怎么书写竞聘演讲稿?
2019/07/04 职场文书
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
2022/04/30 Vue.js