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中合并两个文本文件并按照姓名首字母排序的例子
Apr 25 Python
利用python写个下载teahour音频的小脚本
May 08 Python
centos6.4下python3.6.1安装教程
Jul 21 Python
python实现ID3决策树算法
Dec 20 Python
通过Python 接口使用OpenCV的方法
Apr 02 Python
Django 实现将图片转为Base64,然后使用json传输
Mar 27 Python
python求前n个阶乘的和实例
Apr 02 Python
使用python-Jenkins批量创建及修改jobs操作
May 12 Python
python 操作mysql数据中fetchone()和fetchall()方式
May 15 Python
sqlalchemy实现时间列自动更新教程
Sep 02 Python
python smtplib发送多个email联系人的实现
Oct 09 Python
人工智能深度学习OpenAI baselines的使用方法
May 20 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版
2006/10/09 PHP
分享PHP入门的学习方法
2007/01/02 PHP
php通过文件头检测文件类型通用代码类(zip,rar等)
2010/10/19 PHP
PHP获取表单所有复选框的值的方法
2014/08/28 PHP
Javascript 汉字字节判断
2009/08/01 Javascript
简介JavaScript中POSITIVE_INFINITY值的使用
2015/06/05 Javascript
jquery实现两个图片渐变切换效果的方法
2015/06/25 Javascript
JavaScript实现图片轮播的方法
2015/07/31 Javascript
CSS或者JS实现鼠标悬停显示另一元素
2016/01/22 Javascript
js滚轮事件兼容性问题需要注意哪些
2016/11/15 Javascript
JS作用域深度解析
2016/12/29 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
2017/01/08 Javascript
javascript构造函数以及原型对象的理解
2017/01/13 Javascript
使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)
2017/03/21 jQuery
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
深入解析Vue 组件命名那些事
2017/07/18 Javascript
使用koa-log4管理nodeJs日志笔记的使用方法
2018/11/30 NodeJs
微信小程序 WXML节点信息查询详解
2019/07/29 Javascript
Vue v-model组件封装(类似弹窗组件)
2020/01/08 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
2020/03/26 Javascript
JavaScript浅层克隆与深度克隆示例详解
2020/09/01 Javascript
[53:03]Optic vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
JavaScript中的模拟事件和自定义事件实例分析
2018/07/27 Python
Python使用googletrans报错的解决方法
2018/09/25 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
2019/09/29 Python
python中如何使用insert函数
2020/01/09 Python
Python常用数字处理基本操作汇总
2020/09/10 Python
详解Python中的文件操作
2021/01/14 Python
canvas仿写贝塞尔曲线的示例代码
2017/12/29 HTML / CSS
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
2020/04/07 HTML / CSS
viagogo意大利票务平台:演唱会、体育比赛、戏剧门票
2018/01/26 全球购物
KELLER SPORTS荷兰:在线订购最好的运动产品
2020/10/13 全球购物
Delphi软件工程师试题
2013/01/29 面试题
应届毕业生就业自荐信
2013/10/26 职场文书
python爬取网页版QQ空间,生成各类图表
2021/06/02 Python
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏