专栏首页佛系编程人用Scrapy爬取当当网书籍信息

用Scrapy爬取当当网书籍信息

用Scrapy爬取当当网书籍信息

日期:2019-04-23 23:27:34 星期二

项目流程

  • 确定项目目标
  • 创建Scrapy项目
  • 定义Item(数据)
  • 创建和编写Spider文件
  • 修改Settings.py文件
  • 运行Scrapy爬虫

确定项目目标

今天通过创建一个爬取当当网2018年图书销售榜单的项目来认识一下Scrapy的工作流程

当当链接: "http://bang.dangdang.com/books/bestsellers/01.54.00.00.00.00-year-2018-0-1-1 "

目标:

  • 爬取前3页的数据
  • 爬取字段:图书名、作者和价格

创建Scrapy项目

首先要安装scrapy这个库,但这个安装很麻烦,很容易掉坑

我这里是用anaconda下载的,这种方式很方便

下载命令:pip install scrapy

用cmd命令打开命令行窗口,输入以下命令:

scrapy startproject dangdang

dangdang是项目的名称

到这里就创建好了我们的dangdang项目

定义Item数据

打开items.py文件,并添加以下内容:

import scrapy
class DangdangItem(scrapy.Item): #继承scrapy.Item类 
    name = scrapy.Field() #定义数据属性
    author = scrapy.Field()
    price = scrapy.Field()

创建和编写Spider文件

在spiders文件夹里面新建一个spider.py(自己命名的),编写爬去代码。 代码如下:

import scrapy
from bs4 import BeautifulSoup
from ..items import DangdangItem
#..代表上层目录,因为现在spider文件夹,item在上层目录,然后导入DangdangItem模块
class DangdangSpider(scrapy.Spider):
#括号里需要有scrapy.Spider这个基类,这个基类里面包含很多属性和方法供我们使用
    name = "dangdang" #项目名字,待会运行爬虫时要用到
    allow_domains = ["http://bang.dangdang.com"] 
    #允许爬取的域名,可以准确定位,防止跳到其它广告
    start_urls = [] 
    for num in range(1,4): #获取前三页的链接
        url = f"http://bang.dangdang.com/books/bestsellers/01.54.00.00.00.00-year-2018-0-1-{num}"
        start_urls.append(url)

    def parse(self,reponse): #解析并提取数据的函数
        soup = BeautifulSoup(reponse.text,"html.parser")
        tag_ul = soup.find("ul",class_="bang_list clearfix bang_list_mode")
        tags_li = tag_ul.find_all("li")
        for tag in tags_li:
            item = DangdangItem() #创建一个item对象,用来处理和传输数据
            item["name"] =tag.find("div",class_="name").find("a").text
            item["author"]=tag.find("div",class_="publisher_info").find("a").text 
            item["price"] = tag.find("span",class_="price_n").text
            print(item["name"])
            print("="*40)
            yield item

**修改Settings.py文件 **

爬虫已经写好后还需要去settings.py文件里面修改一些内容

USER_AGENT = 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36' #伪装爬虫

ROBOTSTXT_OBEY = False 
#有些网站的robots.txt规定是不允许爬取的,设置为True,scrapy就可以无视这个规定

运行Scrapy文件

用cmd打开命令窗口,输入以下命令即可开始运行程序

scrapy crawl dangdang

本文还没有对数据进行存储,如果需要如何存储数据,可以加我私聊

本文分享自微信公众号 - 佛系编程人(py520llj),作者:佛系小卢

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 图灵聊天机器人

    佛系编程人
  • 爬虫 | 我要“下厨房”

    - 目标:爬取前十页的标题、链接、配料、七天内做过这个菜的人数以及发布的作者等数据,并存储在excel表中

    佛系编程人
  • 爬虫练习 | 利用有道翻译,做个自己的翻译程序

    佛系编程人
  • iOS 中, vue使用select option,第一个选项无法第一次进入无法选中问题

    参考: https://github.com/vuejs/vue/issues/6581

    吴裕超
  • 爬虫框架Scrapy(一)

    Absorb what is useful. Discard what is not. Add what is uniquely your own.

    小闫同学啊
  • 一、scrapy的下载安装---Windows(安装软件太让我伤心了) 总的来说:

    写博客就和笔记一样真的很有用,你可以随时的翻阅。爬虫的爬虫原理与数据抓取、非结构化与结构化数据提取、动态HTML处理和简单的图像识别已经学完,就差整理博客了 开...

    酱紫安
  • 《手把手带你学爬虫──初级篇》第6课 强大的爬虫框架Scrapy

    Scrapy是一个Python爬虫应用框架,爬取和处理结构性数据非常方便。使用它,只需要定制开发几个模块,就可以轻松实现一个爬虫,让爬取数据信息的工作更加简单高...

    GitOPEN
  • 应用scrapy爬虫框架

    scrapy=scrap+python,是python自动化爬虫框架,相当于一个模板。当启动了一个scrapy工程后,会自动生成若干相互关联的文件,用户仅需根据...

    luanhz
  • Scrapy框架: 基本命令

    hankleo
  • Python爬虫之scrapy的入门使用

    命令:     sudo apt-get install scrapy 或者:     pip/pip3 install scrapy

    海仔

扫码关注云+社区

领取腾讯云代金券