前面已经安装了Scrapy,下面来实现第一个测试程序。

概述

Scrapy是一个爬虫框架,他的基本流程如下所示(下面截图来自互联网)

简单的说,我们需要写一个item文件,定义返回的数据结构;写一个spider文件,具体爬取的数据程序,以及一个管道 pipeline 文件,作为后续操作,比如保存数据等等。

下面以当当网为例,看看怎么实现。
这个例子里面我想爬取的内容是前面20页的羽绒服产品,包括产品名字,链接和评论数。

过程

1. 创建一个Scrapy的项目

scrapy startproject dangdang

2. 创建一个爬虫文件**

scrapy genspider -t basic dd dangdang.com

这样他会自动创建一个爬虫文件,结构如下所示:

3. 编写items.py

items.py

# -*- coding: utf-8 -*-# Define here the models for your scraped items
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/items.htmlimport scrapyclass DangdangItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()title=scrapy.Field()url=scrapy.Field()comment=scrapy.Field()

4. 编写爬虫文件dd.py

前面第二步已经自动生成了一个模板,我们直接修改就行。
dd.py

# -*- coding: utf-8 -*-import scrapy
from dangdang.items import DangdangItem
from scrapy.http import Requestclass DdSpider(scrapy.Spider):name = 'dd'allowed_domains = ['dangdang.com']start_urls = ['http://category.dangdang.com/pg1-cid4010275.html']def parse(self, response):item=DangdangItem()item['title']=response.xpath(u"//a[@dd_name='单品标题']/text()").extract()item['url']=response.xpath("//a[@dd_name='单品标题']/@href").extract()item['comment']=response.xpath("//a[@dd_name='单品评论']/text()").extract()text = response.body# content_type = chardet.detect(text)# if content_type['encoding'] != 'UTF-8':#     text = text.decode(content_type['encoding'])# text = text.encode('utf-8')# print(text)yield itemfor i in range(2,20):url='http://category.dangdang.com/pg%d-cid4010275.html'%iyield Request(url,callback=self.parse)

5. 编写pipelines.py

为了使用pipeline,配置文件需要做个小修改,我顺便关掉了对robot文件的确认
settings.py

ROBOTSTXT_OBEY = FalseITEM_PIPELINES = {'dangdang.pipelines.DangdangPipeline': 300,
}

pipeline.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
import pymysqlclass DangdangPipeline(object):def process_item(self, item, spider):conn=pymysql.connect(host='127.0.0.1',user='root',passwd='root',db='dangdang',use_unicode=True,charset='utf8')for i in range(0,len(item['title'])):title=item['title'][i]link=item['url'][i]comment=item['comment'][i]print(type(title))print(title)# sql="insert into dd(title,link,comment) values ('"+title+"','"+link+"','"+comment+"')"sql = "insert into dd(title,link,comment) values('" + title + "','" + link + "','" + comment + "')"try:conn.query(sql)except Exception as err:passconn.close()return item

6. 创建数据库和表

我最后的数据要保存到mysql里面,python里面可以通过pymysql进行操作。我提前在mysql命令行界面里面创建了一个数据库和空表

mysql> create database dangdang;
mysql> create table dd(id int auto_increment primary, title varchar(100), link varchar(100), comment varchar(32));

7. 执行

scrapy crawl dd
如果不想看日志 可以使用
scrapy crawl dd --nolog

8. 检测结果

test.py

#!/usr/bin/env python
#! -*- coding:utf-8 -*-
# Author: Yuan Li
import pymysql
conn=pymysql.connect(host='127.0.0.1',user='root',passwd='root',db='dangdang',use_unicode=True,charset='utf8')cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
#SQL查询
cursor.execute("select * from dd")
row=cursor.fetchall()
for i in row:print(i)
conn.close()

结果测试成功

转载于:https://blog.51cto.com/beanxyz/2069239

我的第一个Scrapy 程序 - 爬取当当网信息相关推荐

  1. Python爬虫实战+Scrapy框架 爬取当当网图书信息

    1.环境准备 1.在python虚拟环境终端使用 pip install scrapy下载scrapy依赖库 2.使用scrapy startproject book创建scrapy心目工程 3.使用 ...

  2. Scrapy爬虫之爬取当当网图书畅销榜

      本次将会使用Scrapy来爬取当当网的图书畅销榜,其网页截图如下:   我们的爬虫将会把每本书的排名,书名,作者,出版社,价格以及评论数爬取出来,并保存为csv格式的文件.项目的具体创建就不再多讲 ...

  3. 请用Python写一个爬虫程序,爬取当当网图书畅销榜数据

    好的,下面是一个简单的 Python 爬虫代码,可以爬取当当网图书畅销榜数据: import requests from bs4 import BeautifulSoupurl = "htt ...

  4. 小白scrapy试炼-爬取慕课网免费课程

    本文参考博客: scrapy爬虫-爬取慕课网全部课程 scrapy爬虫框架入门实例 准备工作: anaconda(为了简单安装scrapy) 安装scrapy的方法有好多种,原来在pip上花了挺多时间 ...

  5. Scrapy爬取当当网图书销售前100

    scrapy爬取当当网图书畅销榜 一.采集任务 爬取当当网图书畅销榜信息,获取热销图书前500相关数据. 二.网页解析 1. 打开当当网,按照图书榜>图书畅销榜 进入当当网图书畅销榜[http: ...

  6. Scrapy爬取当当网的商品信息存到MySQL数据库

    Scrapy爬取当当网的商品信息存到MySQL数据库 Scrapy 是一款十分强大的爬虫框架,能够快速简单地爬取网页,存到你想要的位置.经过两天的摸索,终于搞定了一个小任务,将当当网的商品信息爬下来存 ...

  7. scrapy框架的简单使用——爬取当当网图书信息

    ** Scrapy爬取当当网图书信息实例 --以警察局办案为类比 ** 使用Scrapy进行信息爬取的过程看起来十分的复杂,但是他的操作方式与警局办案十分的相似,那么接下来我们就以故事的形式开始Scr ...

  8. python实战|用scrapy爬取当当网数据

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:Python进击者 ( 想要学习Python?Pyth ...

  9. 【python爬虫02】使用Scrapy框架爬取拉勾网招聘信息

    使用Scrapy框架爬取拉勾网招聘信息 最近接触了Scrapy爬虫框架,简单写了个爬虫爬取拉钩网的招聘信息,加深对Scrapy框架的理解,不得不说Scrapy框架其实还是蛮方便的,就像爬虫流水线一样, ...

最新文章

  1. 看阿里高手使用Jmeter做功能测试的优缺点
  2. java dbtype_Java实现数据库的读写分离
  3. JavaScript实现唯一路径问题的动态编程方法的算法(附完整源码)
  4. 电脑组装笔记:手把手教你如何自己组装电脑
  5. gcc compiler warning: “will be initialized after/when initialized here”
  6. python程序设计方法_Python程序设计现代方法
  7. 在系统二进制文件中检测到错误_门禁管理系统施工中常见的布线错误
  8. 设计模式:000设计模式与面向对象介绍
  9. 数学建模:方差分析模型
  10. linux pulseaudio卸载,解决Ubuntu 9.04 下 PulseAudio声音故障
  11. html怎么设置内存当缓存,前端浏览器缓存怎么使用
  12. 控制教程 —— 巡航控制篇:2.PID控制器设计
  13. HTTP 的前世今生
  14. 建网站一年经验分享:做网站前的准备和推广经验
  15. pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn pym
  16. ADAS系统传感器应该如何布置
  17. Matlab 2020a 调用usb3.0摄像头实例
  18. 【调剂】浙江工业大学信息工程学院宣琦课题组诚招2020级研究生
  19. 九大数据分析方法:矩阵分析法
  20. 教你设置晨曦记账本登录加载本月账目,及时间显示模式

热门文章

  1. UA MATH565C 随机微分方程V Markov Family的特征函数
  2. 超图 iServer服务体系学习
  3. windbg 脚本学习总结
  4. 很多优秀的软件公司和开发者为什么愿意开源和共享?
  5. Xmind笔记之HTML5+CSS
  6. 转载:JSON技术的调研报告(四种常见的JSON格式对比及分析)
  7. 输入十个学生的成绩,判断及格不及格人数,得到不及格人的学号
  8. TreeView和DataGridView控件组合使用
  9. 常用的HTML标签和属性解释
  10. 截取指定内容/截取用逗号隔开的各个关键字