20.Scrapy日常练手
1.创建爬虫项目:
scrapy startproject tutorial
2.创建 spider
cd tutorial
scrapy genspider quotes quotes.toscrape.com
如下图:
3.
quotes.py
___________________________________________________________________________
# -*- coding: utf-8 -*-
import scrapy
from tutorial.items import TutorialItem
import logging
class QuotesSpider(scrapy.Spider):
name = 'quotes'
allowed_domains = ['quotes.toscrape.com']
start_urls = ['http://quotes.toscrape.com/'] def parse(self, response):
quotes=response.css('.quote')
for quote in quotes: item=TutorialItem()
#内容
item['text']=quote.css('.text::text').extract_first() #作者
item['author']=quote.css('.author::text').extract_first() #标签
item['tags']=quote.css('.tags .tag::text').extract_first() yield item #下一页
next=response.css('.pager .next a::attr("href")').extract_first()
url=response.urljoin(next)
yield scrapy.Request(url=url,callback=self.parse)
items.py
________________________________________________________________________
# -*- coding: utf-8 -*- # Define here the models for your scraped items
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/items.html import scrapy class TutorialItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field() text=scrapy.Field()
author=scrapy.Field()
tags=scrapy.Field()
piplines.py
_________________________________________________________________________
# -*- coding: utf-8 -*- # Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html
from scrapy.exceptions import DropItem import pymysql class TutorialPipeline(object):
# def __init__(self):
# self.limit=50
# def process_item(self, item, spider):
# if item['text']:
# if len(item['text'])>self.limit:
# item['text']=item['text'][0:self.limit].rstrip()+'...'
# return item
# else:
# return DropItem('Missing Text')
def __init__(self):
pass
def open_spider(self, spider):
self.my_conn = pymysql.connect(
host = '192.168.113.129',
port = 3306,
database = 'datas',
user = 'root',
password = '',
charset = 'utf8'
)
self.my_cursor = self.my_conn.cursor() def process_item(self,item, spider): dict(item)
insert_sql = "insert into quotes(author,tags,text) values(%s,%s,%s)"
self.my_cursor.execute(insert_sql,[item['author'],item['tags'],item['text']])
return item
def close_spider(self, spider):
self.my_conn.commit() self.my_cursor.close() self.my_conn.close()
setting.py
___________________________________________________________________________
# Obey robots.txt rules
ROBOTSTXT_OBEY = True ITEM_PIPELINES = {
'tutorial.pipelines.TutorialPipeline': 200,
}
代码配置完: 保存文件格式
scrapy crawl quotes -o quotes.xml
scrapy crawl quotes -o quotes.csv
20.Scrapy日常练手的更多相关文章
- 整理了适合新手的20个Python练手小程序
100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. 本文附带基础视频教程:私信回复[基础]就可以获取的 [程序1] ...
- 20个Java练手项目,献给嗜学如狂的人
给大家推荐一条由浅入深的JAVA学习路径,首先完成 Java基础.JDK.JDBC.正则表达式等基础实验,然后进阶到 J2SE 和 SSH 框架学习.最后再通过有趣的练手项目进行巩固. JAVA基础 ...
- 10个Python基础练习项目,你可能不会想到练手教程还这么有趣
美国20世纪最重要的实用主义哲学家约翰·杜威提出一个学习方法,叫做:Learning By Doing,在实践中精进.胡适.陶行知.张伯苓.蒋梦麟等都曾是他的学生,杜威的哲学也影响了蔡元培.晏阳初等人 ...
- Python练手项目:20行爬取全王者全英雄皮肤
引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了.我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行Python代码即可完成. ...
- 70个Python练手项目列表(都有完整教程)
前言: 不管学习那门语言都希望能做出实际的东西来,这个实际的东西当然就是项目啦,不用多说大家都知道学编程语言一定要做项目才行. 这里整理了70个Python实战项目列表,都有完整且详细的教程,你可以从 ...
- webpack练手项目之easySlide(三):commonChunks(转)
Hello,大家好. 在之前两篇文章中: webpack练手项目之easySlide(一):初探webpack webpack练手项目之easySlide(二):代码分割 与大家分享了webpack的 ...
- webpack练手项目之easySlide(二):代码分割(转)
在上一篇 webpack练手项目之easySlide(一):初探webpack 中我们一起为大家介绍了webpack的基本用法,使用webpack对前端代码进行模块化打包. 但是乍一看webpack ...
- webpack练手项目之easySlide(一):初探webpack (转)
最近在学习webpack,正好拿了之前做的一个小组件,图片轮播来做了下练手,让我们一起来初步感受下webpack的神奇魅力. webpack是一个前端的打包管理工具,大家可以前往:http:/ ...
- NYOJ 323 Drainage Ditches 网络流 FF 练手
Drainage Ditches 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 Every time it rains on Farmer John's fields, ...
随机推荐
- 辞树的QAQ水题(字符串统计,思维)
思路:统计一串字符有多少个'A',并分别统计出每个'A'前后有多少'Q'.然后让每个'A'前后的'Q'相乘并相加就能得出结果了. 注意:数据的类型,卡了int,要用long long. 还有就是在pc ...
- (6)time&datetime(时间模块)
什么是时间模块 就是处理时间相关的功能 如用户注册的时间.统计程序运行的时间等 time 模块 计算机中有三种时间 1.时间戳 从1970年到今天,这个时间段中间经历的秒数 获取时间戳:time.t ...
- CTF-练习平台-Misc之 MISC图穷匕见
十七.MISC图穷匕见 用txt打开,发现文件尾有东西,截取出来 用notepad++的插件 HEX转ASCII 得到35019个坐标 根据图片的详细信息的提示 应该是要把这些坐标转换为图形 这里使用 ...
- 进程间通信--POSIX信号量
1.未决和阻塞标志可以用相同的数据类型sigset_t来存储,sigset_t称为信号集,这个类型可以表示每个信号的“有效”或“无效”状态,在阻塞信号集中“有效”和“无效”的含义是该信号是否被阻塞,而 ...
- adnanh webhook 框架使用
adnanh webhook 支持以下功能: 接收请求 解析header 以及负载以及查询变量 规则检查 执行命令 简单测试 使用docker-compose docker-compose 文件 ve ...
- jquery 1.9里面已经删除了toggle(fn1, fn2)函数:
jquery 1.9里面已经删除了toggle(fn1, fn2)函数:引用Note: This method signature was deprecated in jQuery 1.8 and r ...
- FastAdmin 开发第三天:安装 FastAdmin
环境安装安装好后就可以安装 FastAdmin 了. 根据文档说明安装步骤如下,推荐使用命令行安装: 克隆FastAdmin到你本地 git clone https://git.oschina.net ...
- CentOS6.8 x64+Nginx1.3.8/Apache-httpd 2.4.3+PHP5.4.8(php-fpm)+MySQL5.5.28+CoreSeek4.1源码编译安装
系统为CentOS6.8 x64服务器版精简安装. 准备工作 部署安装目录 /usr/local/* /var/lib/* /var/lib64/* 下载源文件 #cd /usr/local/src ...
- Servlet和JSP比较
1. 两者哟许多相似之处,都可以生成动态网页 2. JSP的优点是擅长于网页制作,生成动态页面,比较直观. JSP的缺点是不容易跟踪与拍错 3. Servlet是纯Java语言,擅长流程处理和业务逻辑 ...
- gcc gdb调试 (二)
GDB的命令概貌——————— 启动gdb后,就你被带入gdb的调试环境中,就可以使用gdb的命令开始调试程序了,gdb的命令可以使用help命令来查看,如下所示: /home/hchen> g ...