Scrapy爬取网页并保存到数据库中一.新建一个Scrapy工程。进入一个你想用来保存代码的文件夹,然后执行:
T:\>scrapy startproject fjsen
会生成一堆文件夹和文件:
scrapy.cfg: 项目配置文件
tutorial/: 项目python模块, 呆会代码将从这里导入
tutorial/items.py: 项目items文件
tutorial/pipelines.py: 项目管道文件
tutorial/settings.py: 项目配置文件
tutorial/spiders: 放置spider的目录二.定义Item
比如我们要获得站点的名字,url和网站描述,我们定义这三种属性的域。
编辑在tutorial目录下的items.py文件如下:from scrapy.item import Item, Field
class FjsenItem(Item):# define the fields for your item here like:# name = Field()title=Field()link=Field()addtime=Field()三.建立一个Spider,你必须为scrapy.spider.BaseSpider创建一个子类,并确定三个主要的、强制的属性:
name:爬虫的识别名,它必须是唯一的,在不同的爬虫中你必须定义不同的名字.
start_urls:爬虫开始爬的一个URL列表。爬虫从这里开始抓取数据,所以,第一次下载的数据将会从这些URLS开始。其他子URL将会从这些起始URL中继承性生成。
parse():爬虫的方法,调用时候传入从每一个URL传回的Response对象作为参数,response将会是parse方法的唯一的一个参数,
这个方法负责解析返回的数据、匹配抓取的数据(解析为item)并跟踪更多的URL。在tutorial\spiders目录下新建一个fjsen_spider.py,内容如下:
#-*- coding: utf-8 -*-
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from fjsen.items import FjsenItem
class FjsenSpider(BaseSpider):name="fjsen"allowed_domains=["fjsen.com"]start_urls=['http://www.fjsen.com/j/node_94962_'+str(x)+'.htm' for x in range(2,11)]+['http://www.fjsen.com/j/node_94962.htm']def parse(self,response):hxs=HtmlXPathSelector(response)sites=hxs.select('//ul/li')items=[]for site in sites:item=FjsenItem()item['title']=site.select('a/text()').extract()item['link'] = site.select('a/@href').extract()item['addtime']=site.select('span/text()').extract()items.append(item)return items   四、将抓取到的数据存入数据库sqlite3中,修改pipelines.py如下:
#-*- coding: utf-8 -*-
from os import path
from scrapy import signals
from scrapy.xlib.pydispatch import dispatcher
class FjsenPipeline(object):def __init__(self):self.conn=Nonedispatcher.connect(self.initialize,signals.engine_started)dispatcher.connect(self.finalize,signals.engine_stopped)def process_item(self,item,spider):self.conn.execute('insert into fjsen values(?,?,?,?)',(None,item['title'][0],'http://www.fjsen.com/'+item['link'][0],item['addtime'][0]))return itemdef initialize(self):if path.exists(self.filename):self.conn=sqlite3.connect(self.filename)else:self.conn=self.create_table(self.filename)def finalize(self):if self.conn is not None:self.conn.commit()self.conn.close()self.conn=Nonedef create_table(self,filename):conn=sqlite3.connect(filename)conn.execute("""create table fjsen(id integer primary key autoincrement,title text,link text,addtime text)""")conn.commit()return conn五、修改setting.py这个文件:将下面这句话加进去
ITEM_PIPELINES=['fjsen.pipelines.FjsenPipeline']六、运行命令
T:\tutorial>scrapy crawl fjsen

Scrapy爬取网页并保存到数据库中相关推荐

  1. python-scapy爬取mooc网保存在数据库中并下载图片

    爬取的步骤 - 确定url地址; - 获取页面信息;(urllib, requests); - 解析页面提取需要的数据: (正则表达式, bs4, xpath) - 保存到本地(csv, json, ...

  2. 用python爬取网页数据并存入数据库中源代码_Python爬取51cto数据并存入MySQL方法详解...

    [] 实验环境 1.安装Python 3.7 2.安装requests, bs4,pymysql 模块 实验步骤1.安装环境及模块 可参考https://www.jb51.net/article/19 ...

  3. 爬取小说并保存到数据库中

    爬取小说并存入数据库中 小说网站 创建数据库 代码实现 小说网站 小说网站:https://www.qb50.com/fenlei 这个网站没有反爬虫措施,所以小说资源很容易爬取下来 这里用reque ...

  4. Java两种方式简单实现:爬取网页并且保存

    注:如果代码中有冗余,错误或者不规范,欢迎指正. Java简单实现:爬取网页并且保存 对于网络,我一直处于好奇的态度.以前一直想着写个爬虫,但是一拖再拖,懒得实现,感觉这是一个很麻烦的事情,出现个小错 ...

  5. java实现网页保存_详解Java两种方式简单实现:爬取网页并且保存

    对于网络,我一直处于好奇的态度.以前一直想着写个爬虫,但是一拖再拖,懒得实现,感觉这是一个很麻烦的事情,出现个小错误,就要调试很多时间,太浪费时间. 后来一想,既然早早给自己下了保证,就先实现它吧,从 ...

  6. 如何使用python实现简单爬取网页数据并导入MySQL中的数据库

    前言:要使用 Python 爬取网页数据并将数据导入 MySQL 数据库,您需要使用 Requests 库进行网页抓取,使用 BeautifulSoup 库对抓取到的 HTML 进行解析,并使用 Py ...

  7. python:使用selenium爬取51job(前程无忧)并将爬取数据存储到MySql数据库中的代码实例

    自己捣鼓了几天写的代码,基本上把51job的岗位相关的数据都爬下来了,可以视要求自行增减,代码虽然有些简陋,不过我爬取的时候没报什么错.代码适合初学者学习使用,废话不多说,代码如下: from sel ...

  8. mysql打印语句_大数据挖掘—(八):scrapy爬取数据保存到MySql数据库

    (大数据挖掘-(七):读懂MySql数据库操作)(大数据挖掘神器--scrapy spider爬虫框架(五):解析多层网页) 通过往期的文章分享,我们了解了如何爬取想要的数据到Items中,也了解了如 ...

  9. java爬取网页并保存_第九讲:Python爬取网页图片并保存到本地

    上一讲我们说了如何把网页的数据通过分析后存储到数据库,我们这次讲如何将网页上的图片提取并下载到本地. 思路如下: 我们本次要爬取的是昵图网首页的图片. 1.首先分析我们要爬取的网页的代码结构,每个网页 ...

最新文章

  1. Android Studio -添加你见过的最牛Log*神器*
  2. 【C 语言】一级指针 易犯错误 模型 ( 判定指针合法性 | 数组越界 | 不断修改指针变量值 | 函数中将栈内存数组返回 | 函数间接赋值形参操作 | 指针取值与自增操作 )
  3. SpringMVC-请求处理
  4. 关于三极管偏置电路的思考
  5. c语言 整型转bool,C语言的布尔类型(_Bool)【转】
  6. springmvc从request中获取body的数据的方法
  7. 前端常用插件、工具类库汇总,新手必收藏!!!
  8. ActionScript3.0中获取变量类型的方法
  9. 你能给我的手机推荐一款安全软件吗?
  10. Eclipse使用:Eclipse安装中文语言包
  11. 传奇病毒劫持流量手法分析
  12. Spring核心功能--总汇
  13. 人工智能全球 2000 位最具影响力学者榜单
  14. 氨基化氧化石墨烯PEG修饰/氨基化氧化石墨烯PEI修饰/Nanoinnova还原石墨烯(各种解说)
  15. python 二维转一维_Numpy 将二维图像矩阵转换为一维向量的方法
  16. Qlikview脚本生成日历表
  17. connected papers 白嫖攻略
  18. Java 拆分PDF文档
  19. C/C++中substr函数的应用(简单讲解)
  20. 计算机专业学历简况,刘觉民

热门文章

  1. Springboot启动报错[ main] o.s.boot.SpringApplication: Application run failed(佷有可能是版本问题)
  2. MCS-51单片机总结——No4.存储之AT24C04A
  3. 汽车发动机如何做保养,名悦集团教你几个小技巧
  4. Win10配置Java开发环境
  5. matlab Lorenz混沌系统求解
  6. linux系统没有xattr命令,Linux 文件系统扩展属性 xattr
  7. NB-IoT和LTE远程通讯方案选择
  8. 微积分入门书籍(二)
  9. 超级计算机多层网络,超级计算机的多层架构抽象及描述
  10. 信息学奥赛真题解析(玩具谜题)