windows下爬虫+数据库(非关系数据库/关系数据库)的实现简介1-redis

本篇涉及到爬虫用的是Python+selenium,关于python+selenium实现对数据的抓取,主要知识点已在上一篇介绍,有问题的可以看上一篇,本节将结合上一节知识点,主要讲解爬虫爬取数据后与数据库(redis/mysql)结合的具体操作。
一.redis篇
1 准备
1.1.在redis网址下载(下载地址[https://redis.io/download]
1.2.解压下载的redis文件
1.3.双击redis-server.exe,即启动redis数据库如下图
在这里插入图片描述
2.python操作redis的方法
2.1,系统中安装redis: 在命令提示行输入 pip install redis
2.2,python连接redis:在pycharm中输入如下代码

import redis
pool=redis.ConnectionPool(host='127.0.0.1',port=6379)
r=redis.Redis(connection_pool=pool)

向redis中写入数据可以用redis与python结合的方法写入string类型可以用set(),读取用get()
可结合数据的写入和读取测试是否连接成功(代码如下);

import redis
pool=redis.ConnectionPool(host='127.0.0.1',port=6379)
r=redis.Redis(connection_pool=pool)

r.set('name','qiyi')
print(r.get('name'))

3.结合以上知识点,和上一篇的内容,可以实现爬虫与redis数据库的结合,具体代码如下(可直接测试,有问题可留言交流):

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import csv
import redis

driver=webdriver.Chrome()
# 连接数据库
pool=redis.ConnectionPool(host='127.0.0.1',port=6379)
r=redis.Redis(connection_pool=pool)
for i in range(2,3):
    # 打开网页
    driver.get('https://www.liepin.com/zhaopin/?headId=a1e957264a1bd4dbe63ba17ab9e4e027&ckId=nrl2k9somybevobeexmuqoerjlj2sm78&oldCkId=a1e957264a1bd4dbe63ba17ab9e4e027&fkId=rnc274jfpr7oqs59z33zmbo0l8a2npkb&skId=rnc274jfpr7oqs59z33zmbo0l8a2npkb&sfrom=search_job_pc&key=运维工程师&currentPage={}&scene=page'.format(i))
    # 添加cookie
    cookie={
        'name':'foo',
        'value': 'bar',

    }
    driver.add_cookie(cookie)

    # driver.quit()
    # 隐式等待 等页面数据加载完之后再进行接下来的操作
    driver.implicitly_wait(60)
    lists = driver.find_element_by_xpath('/html/body/div[1]/div/section[1]/div/ul')
    titles = lists.find_elements_by_xpath('./li/div/div/div[1]/div/a[1]/div[1]/div/div[1]')
    #向redis写入数据
    for n in range(0,len(titles)):
        r.set('name{}'.format(n),'{}'.format(titles[n].text))
 #关闭页面
driver.quit()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好,关于将Scrapy-Redis分布式爬虫爬取的数据写入MySQL数据库,您可以按照以下步骤操作: 1. 在pip中安装PyMySQL库:pip install pymysql 2. 在Scrapy项目的settings.py文件中添加数据库配置信息: ``` MYSQL_HOST = 'localhost' # 你的mysql地址 MYSQL_DBNAME = 'test' # 数据库名字,请修改 MYSQL_USER = 'root' # 数据库账号,请修改 MYSQL_PASSWORD = '123456' # 数据库密码,请修改 MYSQL_PORT = 3306 # 数据库端口号 ``` 3. 在items.py文件中定义需要存储的字段,例如: ``` import scrapy class NewsItem(scrapy.Item): title = scrapy.Field() url = scrapy.Field() date = scrapy.Field() ``` 4. 在pipelines.py文件中编写MySQL存储Pipeline: ``` import pymysql class MySQLPipeline(object): def __init__(self, mysql_host, mysql_port, mysql_user, mysql_password, mysql_dbname): self.host = mysql_host self.port = mysql_port self.user = mysql_user self.password = mysql_password self.dbname = mysql_dbname @classmethod def from_crawler(cls, crawler): return cls( mysql_host=crawler.settings.get('MYSQL_HOST'), mysql_port=crawler.settings.get('MYSQL_PORT'), mysql_user=crawler.settings.get('MYSQL_USER'), mysql_password=crawler.settings.get('MYSQL_PASSWORD'), mysql_dbname=crawler.settings.get('MYSQL_DBNAME') ) def open_spider(self, spider): self.db = pymysql.connect( host=self.host, port=self.port, user=self.user, password=self.password, db=self.dbname ) self.cursor = self.db.cursor() def close_spider(self, spider): self.db.close() def process_item(self, item, spider): data = dict(item) keys = ', '.join(data.keys()) values = ', '.join(['%s'] * len(data)) table = 'news' # 数据库表名,请修改 sql = f'INSERT INTO {table} ({keys}) VALUES ({values})' self.cursor.execute(sql, tuple(data.values())) self.db.commit() return item ``` 4. 在settings.py文件中启用Pipeline: ``` ITEM_PIPELINES = { 'myproject.pipelines.MySQLPipeline': 300 } ``` 这样,当Scrapy爬取到数据时,就会通过MySQLPipeline将数据写入MySQL数据库中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值