本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

以下文章来源于腾讯云 作者:Python进击者

( 想要学习Python?Python学习交流群:1039649593,满足你的需求,资料都已经上传群文件流,可以自行下载!还有海量最新2020python学习资料。 )

1

说在前面的话

在上一篇文章中我们介绍了scrapy的一些指令和框架的体系,今天咱们就来实战一下,用scrapy爬取当当网(网站其实大家可以随意找,原理都是一样)的数据。废话不多说,看下面↓

2

思路分析

当当网:


上图就是所谓的当当网,一个电商网站,我们随意找一个类别来进行爬取吧

就拿手机的界面来说事!

我们来抓取下图中红框的数据:

其实就三个数据,一个手机的名称以及相关的链接和评论的数量


大家可以从上图中可以看到这几个数据的标签位置,我们就可以直接通过xpath来进行简单的提取,xpath很简单,不会的朋友百度一下就明白了。

我们爬取完这些数据后就把这些数据存储到数据库当中。

3

正式操作啦

首先,因为我们要抓取网页中的标题、链接和评论数,所以我们首先得写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()link = scrapy.Field()comment = scrapy.Field()

我们需要抓取什么数据就调用scrapy.Field()这个方法在上面的注释中官方有给出。

我们在这里添加完我们需要爬取的哪些数据后,我们在转向我们的爬虫文件,我们通过 scrapy genspider dd dangdang.com 创建了一个爬虫文件dd.py:

# -*- coding: utf-8 -*-
import scrapy
# 我们需要导入这个项目里的items.py中的类
from dangdang.items import DangdangItem
# 导入scrapy中的Request
from scrapy.http import Request
'''
爬取当当网上的链接等信息
'''
class DdSpider(scrapy.Spider):# 这里是爬虫的名称name = 'dd'# 这里是域名allowed_domains = ['dangdang.com']# 这里是我们要爬取的界面start_urls = ['http://category.dangdang.com/pg1-cid4004279.html']def parse(self, response):# 实例化对象item = DangdangItem()# 通过分析标签,我们可以依次得到相关的数据,并将它们赋值给item类中item["title"] = response.xpath("//a[@name='itemlist-title']/@title").extract()item["link"] = response.xpath("//a[@name='itemlist-title']/@href").extract()item["comment"] = response.xpath("//a[@name='itemlist-review']/text()").extract()# 提交数据,把数据传送给item类yield item

我把每一句话的解释都写在注解里了,其实这个爬虫文件才是真正的进行了爬取工作,它把爬取的数据全部传送给我们之前写的item.py里的类中,然后我们最后如果需要对数据进行处理,我们就需要进入pipelines.py进行数据的处理(比如添加到数据库或者写入txt中等等操作),接下来我们需要把我们所需要的数据存放至数据库。

在这之前我们需要进行两个操作!首先进入settings.py中,我们知道这里是我们整个项目的管理文件,我们找到如下代码:

# ITEM_PIPELINES = {# 'dangdang.pipelines.DangdangPipeline': 300,
# }

我们要把这里的注释给去掉,因为我们要去使用pipelines文件进行数据的处理,去掉之后:

ITEM_PIPELINES = {'dangdang.pipelines.DangdangPipeline': 300,
}

第二个也是在settings.py文件中:

ROBOTSTXT_OBEY = True

我们需要把它修改成False,因为大部分网站都是存在robots文件的,如果为true代表着我们遵循robots规则,这样会导致我们很多页面无法爬取,所以需要把它设置成False。

上面这两步处理之后,我们就可以正式写pipelines.py文件了(也就是可以正式操作数据了)

# -*- coding: utf-8 -*-
# 导入 pymysql库,这是python用于连接mysql数据库的专用库
import pymysql
# 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.htmlclass DangdangPipeline(object):def process_item(self, item, spider):#连接数据库操作conn = pymysql.connect("localhost", "root", "LS985548459", "dangdang", charset='utf8')# 循环for i in range(0, len(item["title"])):# 获取每个标题title = item["title"][i]# 获取每个链接link = item["link"][i]# 获取每个评论comment = item["comment"][i]# 使用mysql语句进行插入数据表sql = "insert into goods(title,link,comment) values ('"+title+"','"+link+"','"+comment+"');"try:#执行sql语句conn.query(sql)#提交语句,这句话必须写,否则无法成功!conn.commit()except Exception as e:print(e)# 关闭连接conn.close()return item

同样我把每一行的解释都写在了注释里面,如仍有疑问的,可以私聊我~

最后我们通过 scrapy crawl dd --nolog 运行一下我们的爬虫,运行完后,打开我们的数据库,发现已经完成添加了!

4

结尾

其实整个项目下来,我们会发现我们的思路很清晰,因为scrapy框架它把每一个步骤分解到不同的文件中解决,这样更有利于我们去写好整个项目,所以这里也要为scrapy框架的开发人员致谢!

python实战|用scrapy爬取当当网数据相关推荐

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

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

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

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

  3. python爬虫案例-爬取当当网数据

    输入关键字,爬取当当网中商品的基本数据,代码如下: 1 # Author:K 2 import requests 3 from lxml import etree 4 from fake_userag ...

  4. 爬虫项目实战十一:爬取当当网商品信息

    爬取当当网商品信息 目标 项目准备 网站分析 页码分析 反爬分析 代码实现 效果显示 目标 批量爬取当当网商品信息,保存为csv文件到本地. 项目准备 软件:Pycharm 第三方库:requests ...

  5. [Python]scrapy爬取当当网书籍相关信息

    最近想买两本程序设计的书籍,也就在当当网上面看了下,发现真是太多的书了.所以想着利用爬虫知识爬取下程序设计相关书籍的一些信息. 00_1. 首先是今天所用到的东西 python 3.5 + scrap ...

  6. scrapy爬取当当网Python图书的部分数据

    1.下载scrapy框架 pip install scrapy 2.在E盘下创建一个文件夹scrapy01,在命令行窗体中进入该文件夹 3.创建项目:scrapy startproject 项目名 s ...

  7. scrapy爬取当当网

    春节已经临近了尾声,也该收收心了.博客好久都没更新了,自己在年前写的爬虫也该"拿"出来了. 本次爬取的目标是当当网,获取当当网所有的书籍信息.采用scrapy+mongodb来采集 ...

  8. Python |(爬虫 )爬取当当网书籍信息存到Excel中

    文献检索作业,小白也很无奈.还好有学霸同学的可以借鉴. 一.任务 获取当当网上至少300本书[均为某类书,如Linux相关的书籍,或C++相关的书籍]的信息,包括书名,网址,价格,作者,并存在exce ...

  9. Python | 实战Scapy,爬取起点网全部小说!

    作者:totcw 来源:http://blog.csdn.net/totcw/article/details/65444660 目录: 概述  创建项目  item的编写 pipelines的编写 s ...

最新文章

  1. 虚拟服务器能加内存吗,虚拟服务器可以加内存吗
  2. 戴尔:发力互联互通 构建世界基础设施中心
  3. C++中指针和引用的区别
  4. Linux 基础——查看文件内容的命令
  5. 今天的不是陶渊明的 飞鸽传书
  6. python学习机器学习_机器学习Python技巧,令人毛骨悚然的Linux命令,Thelio,Podman等
  7. sklearn之Multiclass 估计器
  8. mysql 排序速度_MySQL排序速度慢而且可能不稳定
  9. 前沿重器[22] | 聊聊对话系统:技术架构
  10. windows下搭建tracker服务器
  11. 复合函数求导经典例题_导数--复合函数的导数练习题
  12. hbuilderx为什么打不开_windows系统,HBuilderX无法启动、点击无反应、或启动报错的解决方案...
  13. SNF开发平台WinForm之十三-单独从服务器上获取PDF文件进行显示-SNF快速开发平台3.3-Spring.Net.Framework...
  14. 伸展树(一) - 图文解析与C语言实现
  15. 前端体系必备的软技能和知识点
  16. 【华为机试真题 C++】高矮个子排队-100
  17. 创富学第一学习各家之长,史玉柱发展史.-宁可错过100次机会,不瞎投一个项目。...
  18. octagam® 10%治疗皮肌炎患者的ProDERM研究达到主要终点的阳性结果将在ACR 2020年会上呈报
  19. 网络安全----密码学
  20. Okidoki - Alpha阶段项目展示 - TEAM LESS ERROR

热门文章

  1. 使用Rust交叉编译arm程序
  2. robotiq 2f 140安装在UR3机械臂后面在gazebo仿真中散架、抖动
  3. 2022年湖南省临床执业医师考试第一单元内分泌系统模拟题
  4. java浙江计算机二级_2019年9月浙江省计算机二级考试教材:二级Java语言程序设计...
  5. 《情感化设计/Emotional Design》中文版序 by Donald Norman
  6. (转)联通项目中的常见术语(BTS、BSC、MSC、VLR、HLR)
  7. racte margin 居中 失效_圆锥滚子轴承早期失效验证及检测分析
  8. 李沐动手学深度学习V2-目标检测边界框
  9. 我的VS2013版本
  10. 视频教程-C#WinForm工业企业销售管理系统开发-C#