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 中的多线程 新手必看
Nov 20 Python
Python基于回溯法子集树模板解决全排列问题示例
Sep 07 Python
python print 按逗号或空格分隔的方法
May 02 Python
python3使用smtplib实现发送邮件功能
May 22 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
Aug 26 Python
python自动化测试之异常及日志操作实例分析
Nov 09 Python
tensorflow 获取所有variable或tensor的name示例
Jan 04 Python
Pytorch数据拼接与拆分操作实现图解
Apr 30 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
May 26 Python
python2和python3哪个使用率高
Jun 23 Python
python -v 报错问题的解决方法
Sep 15 Python
Django-silk性能测试工具安装及使用解析
Nov 28 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字符串操作针对负值的判断分析
2016/07/28 PHP
破除网页鼠标右键被禁用的绝招大全
2006/12/27 Javascript
JS 创建对象(常见的几种方法)
2008/11/03 Javascript
js打开windows上的可执行文件示例
2014/05/27 Javascript
仿百度联盟对联广告实现代码
2014/08/30 Javascript
jQuery fancybox在ie浏览器下无法显示关闭按钮的解决办法
2016/02/19 Javascript
jQuery对象与DOM对象转换方法详解
2016/05/10 Javascript
详解vue express启动数据服务
2017/07/05 Javascript
Element UI 自定义正则表达式验证方法
2018/09/04 Javascript
详解vuex的简单todolist例子
2019/07/14 Javascript
vue将后台数据时间戳转换成日期格式
2019/07/31 Javascript
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
vue实现登录、注册、退出、跳转等功能
2020/12/23 Vue.js
[05:04]DOTA2上海特级锦标赛主赛事第二日TOP10
2016/03/04 DOTA
[01:11:35]Liquid vs LGD 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
qpython3 读取安卓lastpass Cookies
2016/06/19 Python
Python实现快速计算词频功能示例
2018/06/25 Python
python实现嵌套列表平铺的两种方法
2018/11/08 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
2018/12/10 Python
对python读取CT医学图像的实例详解
2019/01/24 Python
Python中常用的内置方法
2019/01/28 Python
Python 中判断列表是否为空的方法
2019/11/24 Python
python读取图片的几种方式及图像宽和高的存储顺序
2020/02/11 Python
Python使用扩展库pywin32实现批量文档打印实例
2020/04/09 Python
python和opencv构建运动检测器的实现
2021/03/03 Python
vue+django实现下载文件的示例
2021/03/24 Vue.js
写好自荐信的要点
2013/11/06 职场文书
素质拓展感言
2014/01/29 职场文书
整改落实情况汇报材料
2014/10/29 职场文书
第一节英语课开场白
2015/06/01 职场文书
2015年医院保卫科工作总结
2015/07/23 职场文书
孩子满月酒答谢词
2015/09/30 职场文书
2016大学生暑期社会实践心得体会
2016/01/14 职场文书
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript