IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 如何将爬取的数据存入数据库中 -> 正文阅读

[大数据]如何将爬取的数据存入数据库中

爬取链接:我爱我家
如果需要参考创建步骤,可以参考这篇文章
爬虫文件:loupan.py

import scrapy
from baiduSpider.items import BaiduspiderItem

class LoupanSpider(scrapy.Spider):
    name = 'loupan'
    allowed_domains = ['5i5j.com']
    # start_urls = ['https://fang.5i5j.com/bj/loupan/n1/']  #爬取链接
    start_urls=['https://fang.5i5j.com/bj/loupan/n%s/' % x for x in range(1,3)]   #多页爬取

    def parse(self, response):
        item=BaiduspiderItem()
        for row in response.xpath('/html/body/div[4]/div[1]/ul[1]/li'):
            item['house_rank']=row.xpath('div[2]/div[1]/a/span[1]/text()').get()   #楼盘排名
            item['house_name']=row.xpath('div[2]/div[1]/a/span[2]/text()').get()   #楼盘名
            item['addr']=row.xpath('div[2]/div[3]/a/span[5]/text()').get().strip()   #地址
            item['size']=row.xpath('div[2]/div[2]/a/span[4]/text()').get()   #大小
            item['price']=row.xpath('div[3]/p/text()').get()  #均价
            yield item

items.py

import scrapy
class BaiduspiderItem(scrapy.Item):
    house_rank=scrapy.Field()
    house_name=scrapy.Field()
    addr=scrapy.Field()
    size=scrapy.Field()
    price=scrapy.Field()

数据库里创建相应的表格和字段

USE test;
CREATE table loupan(
Id Int AUTO_INCREMENT PRIMARY key, #自增长主键
house_name varchar(255) CHARACTER set utf8,#楼盘名
addr varchar(255) CHARACTER set utf8, #楼盘地址
size varchar(255) CHARACTER set utf8, #大小
price varchar(255) CHARACTER set utf8 #价格
)

在这里插入图片描述
settings.py

MYSQL_DB_HOST = "127.0.0.1"
MYSQL_DB_PORT = 3306  # 端口
MYSQL_DB_NAME = "test"
MYSQL_DB_USER = "root"
MYSQL_DB_PASSWORD = "123456"
ITEM_PIPELINES = {
    'baiduSpider.pipelines.MySQLPipeline': 2
}

pipelines.py

import pymysql

class BaiduspiderPipeline:
    def process_item(self, item, spider):
        return item


class MySQLPipeline():
    # 开始爬取数据之前被调用
    # 读取配置文件,初始化连接以及游标
    def open_spider(self, spider):
        host = spider.settings.get("MYSQL_DB_HOST", "127.0.0.1")
        port = spider.settings.get("MYSQL_DB_PORT", 3306)
        dbname = spider.settings.get("MYSQL_DB_NAME", "test")
        user = spider.settings.get("MYSQL_DB_USER", "root")
        pwd = spider.settings.get("MYSQL_DB_PASSWORD", "123456")

        self.db_conn = pymysql.connect(host=host, port=port,
                                       db=dbname, user=user, password=pwd)
        self.db_cur = self.db_conn.cursor()
    # 每解析完一个 item 调用
    # 插入数据

    def process_item(self, item, spider):
        values = (
            item['house_name'],
            item['addr'],
            item['size'],
            item['price']
        )
        sql = "insert into loupan(house_name,addr,size,price) values(%s,%s,%s,%s)"
        self.db_cur.execute(sql, values)   #执行sql语句
        return item


    # 爬取完全部数据后被调用
    # 提交数据,释放连接
    def close_spider(self, spider):
        self.db_conn.commit()
        self.db_cur.close()
        self.db_conn.close()

最后执行scrapy crawl loupan -o loupan.csv,数据库中存有了数据
在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-06 12:17:51  更:2021-10-06 12:19:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:50:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码