1. 使用cmd+R命令进入命令行窗口,并进入你需要创建项目的目录

cd 项目地址

2. 创建项目

scrapy startproject <项目名>
cd <项目名>

例如

scrapy startproject quote
cd quote

3. 编写item.py文件(定义需要爬取的文件)

import scrapy
class QuoteItem(scrapy.Item):
# define the fields for your item here like:
text = scrapy.Field()
author = scrapy.Field()
tags = scrapy.Field()

4. 创建爬虫文件

scrapy genspider <爬虫文件名> <域名>

例如

scrapy genspider myspider quotes.toscrape.com

5. 编写myspider.py文件

import scrapy
from quote.items import QuoteItem class MyspiderSpider(scrapy.Spider):
name = 'myspider'
allowed_domains = ['quotes.toscrape.com']
start_urls = ['http://quotes.toscrape.com/'] def parse(self, response):
for each in response.xpath('//div[@class="quote"]'):
item = QuoteItem()
item['text'] = each.xpath('./span/text()').extract()[0]
item['author'] = each.xpath('.//small/text()').extract()[0]
list = each.xpath('.//a[@class="tag"]/text()').extract()
#列表形式的文件不能存入mysql,需要弄成str形式
item['tags']= '/'.join(list)
yield item next = response.xpath('//li[@class="next"]/a/@href').extract()[0]
url = response.urljoin(next)
yield scrapy.Request(url=url,callback=self.parse)

6. 编写pipelines.py(如果需要存入到数据库)

import pymysql.cursors

class QuotePipeline(object):
def __init__(self):
self.connect = pymysql.connect(
host='localhost',
user='root',
password='',
database='quotes',
charset='utf8',
)
self.cursor = self.connect.cursor() def process_item(self, item, spider):
item = dict(item)
sql = 'insert into quote(text,author,tags) values(%s,%s,%s)'
self.cursor.execute(sql,(item['text'],item['author'],item['tags']))
self.connect.commit()
return item def close_spider(self,spider):
self.cursor.close()
self.connect.close() 

7. 修改setting.py文件

ROBOTSTXT_OBEY = True

8. 运行

scrapy crawl myspider

9. 保存为csv文件

scrapy crawl quotes –o quotes.csv

参考资料

https://www.cnblogs.com/shuimohei/p/10491833.html

https://blog.csdn.net/ck784101777/article/details/104468780/

最新文章

  1. DBCC CHECKDB 遭遇Operating system error 112(failed to retrieve text for this error. Reason: 15105) encountered
  2. NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例
  3. .Net框架2.0和4.0版本对比
  4. Delphi连接Oracle控件ODAC的安装及使用(轉載)
  5. C++ 以费波纳茨数列为权重的加权均值计算方法 wMA
  6. express-19 路由2
  7. 移动App的REST API设计实践
  8. cocos2dx的lua绑定
  9. 56. 2种方法判断二叉树是不是平衡二叉树[is balanced tree]
  10. Dijkstra(迪杰斯特拉)源最短路径 小白说明
  11. poj 1733(带权并查集+离散化)
  12. handler.post(r)同一个线程的疑惑
  13. [Ioi2007]Miners 矿工配餐(BZOJ1806)
  14. C++vptr初始化时间
  15. mac sourcetree启用外部合并工具(beyond compare)
  16. .net webapi 后台导出excel 申请付款单实例
  17. 标记化结构初始化语法 在结构体成员前加上小数点 如 “.open .write .close ”C99编译器 .
  18. 多线程场景下如何使用 ArrayList
  19. python 函数式编程:高阶函数,map/reduce
  20. Android指纹识别API讲解,让你有更好的用户体验

热门文章

  1. pdf2swf 和pdf2html 使用命令详解
  2. 解决使用Navicat等工具进行连接登录mysql的1130错误,无法使用Ip远程连接的问题(mysql为8.0版本)
  3. 30天自制操作系统-day1
  4. Yaml spring boot 二维数组写法
  5. Android基本组件TextView和EditView
  6. 基于jupyter lab搭建网页编程环境并添加自定义python kernel和matlab kernel以及plotly的使用
  7. JAVA_基础IO流随机存取文件流(四)
  8. DAS、SAN和NAS三种服务器存储方式 (转)
  9. Let&#39;s Encrypt SSL证书申请
  10. Spring Boot -- 外部配置的属性使用