scrapy爬虫储存到mysql_Scrapy爬虫案例 | 数据存储至MySQL

scrapy爬虫储存到mysql_Scrapy爬虫案例 | 数据存储至MySQL首先,MySQL创建好数据库和表image然后编写各个模块item.pyimportscrapyclassJianliItem(scrapy.Item):name=scrapy.Field()url=scrapy.Field()pipeline.pyimportpymysql#导入数据库的类classJianliPipelin…

大家好,又见面了,我是你们的朋友全栈君。

首先,MySQL创建好数据库和表

029ff47818eb

image

然后编写各个模块

item.py

import scrapy

class JianliItem(scrapy.Item):

name = scrapy.Field()

url = scrapy.Field()

pipeline.py

import pymysql #导入数据库的类

class JianliPipeline(object):

conn = None

cursor = None

def open_spider(self,spider):

print(‘开始爬虫’)

self.conn = pymysql.Connect(host=’127.0.0.1′,port=3306,user=’root’,password=”,db=’jianli’) #链接数据库

def process_item(self, item, spider): #编写向数据库中存储数据的相关代码

self.cursor = self.conn.cursor() #1.链接数据库

sql = ‘insert into jl values(“%s”,”%s”)’%(item[‘name’],item[‘url’]) #2.执行sql语句

try: #执行事务

self.cursor.execute(sql)

self.conn.commit()

except Exception as e:

print(e)

self.conn.rollback()

return item

def close_spider(self,spider):

print(‘爬虫结束’)

self.cursor.close()

self.conn.close()

spider

# -*- coding: utf-8 -*-

import scrapy

import re

from lxml import etree

from jianli.items import JianliItem

class FxhSpider(scrapy.Spider):

name = ‘jl’

# allowed_domains = [‘feixiaohao.com’]

start_urls = [‘http://sc.chinaz.com/jianli/free_{}.html’.format(i) for i in range(3)]

def parse(self,response):

tree = etree.HTML(response.text)

a_list = tree.xpath(‘//div[@id=”container”]/div/a’)

for a in a_list:

item = JianliItem (

name=a.xpath(“./img/@alt”)[0],

url=a.xpath(“./@href”)[0]

)

yield item

settings.py

#USER_AGENT

headers = {

“user-agent”:”Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36″

}

# Obey robots.txt rules

ROBOTSTXT_OBEY = False

# Configure item pipelines

# See https://docs.scrapy.org/en/latest/topics/item-pipeline.html

ITEM_PIPELINES = {

‘jianli.pipelines.JianliPipeline’: 300,

}

查看存储情况

029ff47818eb

image

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/153138.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • django 异常处理_django apscheduler

    django 异常处理_django apscheduler前言在讲解如何解决migrate报错原因前,我们先要了解migrate做了什么事情,migrate:将新生成的迁移脚本。映射到数据库中。创建新的表或者修改表的结构。问题1:migrate怎么判断哪

    2022年8月7日
    4
  • mysql 字符串类型 分区_MySQL分区类型

    mysql 字符串类型 分区_MySQL分区类型博文大纲:1、RANGE分区2、LIST分区3、HASH分区4、key分区5、MySQL分表和分区的区别6、附加:如何实现将分区放在不同的目录下进行存储MySQL分区类型如下:RANFGE分区LIST分区HASH分区key分区上面的四种分区的条件必须是整形,如果不是整形需要通过函数将其转换为整形。1、RANGE分区RANGE分区是基于属于一个给定连续区间的列值,把多行分配给分区。这些区间要连续且不…

    2022年6月8日
    31
  • 什么是publickeytoken及publickeytoken的作用

    什么是publickeytoken及publickeytoken的作用什么是publickeytoken及publickeytoken的作用dll的publickeytoken的作用。

    2022年7月1日
    24
  • idea怎么搭建springboot_你没有创建该项目的权限

    idea怎么搭建springboot_你没有创建该项目的权限一般来说,用IDEA创建SpringBoot项目有两种方式。其一是Spring官网提供了一个快速生成SpringBoot项目的网站,可以在官网直接下载后,再导入IDEA中。另外一种是直接用IDEA创建一个SpringBoot项目,一般开发也是用的这种方式进行创建。虽说SpringBoot简化了Spring的配置,但学习之前需要对Spring基础知识有一定的掌握。……

    2022年10月13日
    4
  • AbstractInterceptor和MethodFilterInterceptor的区别

    AbstractInterceptor和MethodFilterInterceptor的区别1.AbstractInterceptor是Interceptor的子类。2.MethodFilterInterceptor是AbstractInterceptor的子类,你需要实现的拦截器支持方法过滤性,就继承MethodFilterIntercepter这个类.默认的情况下,拦截器会拦截Action中的所有的方法,这里不包括setter或getter方法.这时就可以使用方法

    2022年5月14日
    41
  • 【tensorflow】浅谈什么是张量tensor

    【tensorflow】浅谈什么是张量tensor也许你已经下载了TensorFlow,而且准备开始着手研究深度学习。但是你会疑惑:TensorFlow里面的Tensor,也就是“张量”,到底是个什么鬼?也许你查阅了维基百科,而且现在变得更加困惑。也许你在NASA教程中看到它,仍然不知道它在说些什么?问题在于大多数讲述张量的指南,都假设你已经掌握他们描述数学的所有术语。别担心!我像小孩子一样讨厌数学,所以如果我能明白,你也可以!…

    2022年6月25日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号