Scrapy框架-阳光政务平台爬虫(二)

想要爬取的网站:微信读书
爬取内容:各个排行榜中的 书名 作者名 详情页网站 评分 出版社 出版日期
文末有工程文件

items.py设置

  • 配置items.py文件

    • items.py文件中NameItem(scrapy.Item)类中写入
    name = scrapy.Field()
    author = scrapy.Field()
    grade = scrapy.Field()
    press = scrapy.Field()
    publish_date = scrapy.Field()
    detail_url = scrapy.Field()
    
    • 这一部分相当于整合信息条目,而且方便检查在写爬虫文件时的拼写错误

setting.py设置

  • 开启并修改网络代理

    USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36 Edg/96.0.1054.29'
    # agent可以在浏览器中任意页面的检查中找一个
  • 添加日志打印等级
    LOG_LEVEL = "WARNING"
    
  • 开启pipeline交互,若不开启,爬虫文件的数据就无法传递给pipeline.py文件
    ITEM_PIPELINES = {'yangguang.pipelines.YangguangPipeline': 300,
    }
    

主爬虫内容

  • 代码

       import scrapy
    import re
    from ..items import WxbookItemclass WxSpider(scrapy.Spider):name = 'wx'allowed_domains = ['weread.qq.com']start_urls = ['https://weread.qq.com/web/category/']  # 爬取的榜单页面def parse(self, response):# 1.大分类分组li_list = response.xpath('//ul[@class="ranking_list"]/li')for li in li_list:item = WxbookItem()rank_url = 'https://weread.qq.com' + li.xpath('./a/@href').extract_first()  # 各榜单url# print(rank_name_1, rank_href_1)yield scrapy.Request(rank_url,callback=self.parse_rank_0,  # 回调详情页爬虫程序meta={"item": item}  # 传递item数据)def parse_rank_0(self, response):item = response.meta["item"]# 2.小分类分组div_list = response.xpath('//div[@class="ranking_page_header"]/div/div')num_0 = re.sub("\D", "", response.url)rank_num = 0rank_url_2 = []try:for div in div_list:     # 根据页面url构造分榜单urlrank_num += 1for num in range(rank_num):rank_url_2.append('https://weread.qq.com/web/category/' + str(int(num_0)+num))for url in rank_url_2:yield scrapy.Request(url,callback=self.parse_rank_1,  # 回调详情页爬虫程序meta={"item": item}  # 传递item数据)except:passdef parse_rank_1(self, response):item = response.meta["item"]li_list = response.xpath('//ul[@class="ranking_content_bookList"]/li')for li in li_list:  # 分榜单页提取部分信息和详情页urlitem["author"] = li.xpath('./div[1]/div[2]/p[2]/a/text()').extract_first()item["grade"] = li.xpath('./div[1]/div[2]/p[3]/span[3]/span/text()').extract_first()item["detail_url"] = 'https://weread.qq.com' + li.xpath('./a/@href').extract_first()# print(item)yield scrapy.Request(item["detail_url"],callback=self.parse_detail,  # 回调详情页爬虫程序meta={"item": item}  # 传递item数据)def parse_detail(self, response):item = response.meta["item"]item["detail_url"] = response.url  # 提取剩余信息item["name"] = response.xpath('//div[@class="bookInfo_right"]/h2/div/text()').extract_first()item["author"] = response.xpath('//div[@class="bookInfo_right"]/div/a/text()').extract_first()item["press"] = response.xpath('//div[@class="wr_dialog"]/div/div/div[2]/span[2]/text()').extract_first()item["grade"] = response.xpath('//div[@class="book_ratings_container"]/div[2]/div[1]/span[1]/text()').extract_first()item["publish_date"] = response.xpath('//div[@class="wr_dialog"]/div/div/div[3]/span[2]/text()').extract_first()print(item)
  • 几点注意事项
    • 一定要导入item类,否则无法保存信息
    • allowed_domains一定要写对,特别是自己定义的函数(parse_detail)所用的url一定要在allowed_domains的范围内,否则会不执行回调函数。
      比如回调函数请求网站:[https://book.douban.com/top250?start=1]
      而allowed_domains = [“douban.com”] 就无法正常回调

pipeline.py设置

  • 代码

    class WxbookPipeline:
    def process_item(self, item, spider):print(item["name"])return item
    

自定义run.py

  • 之前的文章说过,跑scrapy程序需要在命令行中输入scrapy crawl xxx
    这种在命令行中的交互方式实在不方便,那我们在工程目录下定义一个run.py文件就可以直接在pycharm里运行这个run.py文件就能实现在pycharm里进行交互了。
  • 代码
    from scrapy import cmdlinecmdline.execute('scrapy crawl wx'.split()) 

结果

{'author': '黑格尔','detail_url': 'https://weread.qq.com/web/reader/bbe32a1072051bbdbbed499','grade': ' 90.0','name': '精神现象学·上卷(汉译世界学术名著丛书)','press': '商务印书馆','publish_date': '1979年6月'}

链接: 工程文件

Scrapy框架-阳光政务平台爬虫(二)相关推荐

  1. dataObject可以去重吗java_python爬虫scrapy框架之增量式爬虫的示例代码

    scrapy框架之增量式爬虫 一 .增量式爬虫 什么时候使用增量式爬虫: 增量式爬虫:需求 当我们浏览一些网站会发现,某些网站定时的会在原有的基础上更新一些新的数据.如一些电影网站会实时更新最近热门的 ...

  2. 基于Scrapy框架的Python新闻爬虫

    概述 该项目是基于Scrapy框架的Python新闻爬虫,能够爬取网易,搜狐,凤凰和澎湃网站上的新闻,将标题,内容,评论,时间等内容整理并保存到本地 详细 代码下载:http://www.demoda ...

  3. 使用scrapy框架做赶集网爬虫

    使用scrapy框架做赶集网爬虫 一.安装 首先scrapy的安装之前需要安装这个模块:wheel.lxml.Twisted.pywin32,最后在安装scrapy pip install wheel ...

  4. scrapy框架之增量式爬虫

    scrapy框架之增量式爬虫 一 .增量式爬虫 什么时候使用增量式爬虫: 增量式爬虫:需求 当我们浏览一些网站会发现,某些网站定时的会在原有的基础上更新一些新的数据.如一些电影网站会实时更新最近热门的 ...

  5. python scrapy 框架的简单使用爬虫苏宁易购图书信息

    python scrapy 框架的简单使用&&爬虫苏宁易购图书信息 前言 第一步: 分析网页 1.1 找到要爬取的数据位置 分类信息 图书信息 价格信息 1.2 分析如何获取数据 正则 ...

  6. python新闻爬虫系统的功能_基于Scrapy框架的Python新闻爬虫

    一.开发背景 Python作为数据处理方面的一把好手,近年来的热度不断增长.网络爬虫可以说是Python最具代表性的应用之一,那么通过网络爬虫来学习Python以及网络和数据处理的相关内容可以说是再合 ...

  7. Scrapy框架中的crawlspider爬虫

    1 crawlspider是什么 在spider中要寻找下一页的url地址或者内容的url地址,想想是否有简单的方法省略寻找url的过程? 思路: 从response中提取所有的满足规则的url地址 ...

  8. python的scrapy框架的安装_Python爬虫基础(四)--Scrapy框架的安装及介绍

    Scrapy框架的介绍 安装: pip3 install Scrapy 安装测试: cmd命令行界面,输入:scrapy -h 框架安装完成: scrapy框架: 分为五个模块+两个中间件(5+2结构 ...

  9. python scrapy框架 简书_python爬虫框架——Scrapy架构原理介绍

    说起写爬虫,大多数第一时间想到的就是python了.python语法简洁明了,加上及其丰富好用的库,用它来写爬虫有天然的优势. 之前学python的时候也用requests+lxml写过几个爬虫玩,但 ...

  10. python scrapy框架详解_Python爬虫知识点四--scrapy框架

    一.scrapy结构数据 解释: 1.名词解析: o 引擎(Scrapy Engine) o 调度器(Scheduler) o 下载器(Downloader) o 蜘蛛(Spiders) o ...

最新文章

  1. 多继承中虚基类构造函数的一种调用规则
  2. docker小技巧-清理未使用空间
  3. Net::SSH::Perl 模块
  4. NSUserDefaults数据保存使用
  5. [vue] 你们项目为什么会选vue而不选择其它的框架呢?
  6. TypeScript 简介与优势
  7. 盘一盘 Thread源码
  8. 前端居中模板(常用HTML模板)
  9. 淘宝开源Key/Value结构数据存储系统Tair技术剖析
  10. chart控件做实时曲线显示_Spark+Kafka+WebSocket+eCharts实时分析-完全记录(5)
  11. 本周leetcode刷题总结!(二叉树)
  12. docker run -di -p 日志_docker随手笔记第十一节 portainer.io安装使用,比k8s简单
  13. html5 手机uc浏览器 复制链接,H5手机移动端调起浏览器(qq浏览器,uc浏览器)自带分享功能实例...
  14. 计算离散点线性相关系数
  15. java word中插入图片_在Word文档中插入图片
  16. 纵横杯2020 web wp
  17. 沈航计算机学院杨华,BCD码的加法.doc
  18. 计算机无法调整亮度,win10亮度无法调节怎么办_win10电脑亮度调节失灵的解决方法...
  19. arnold如何设置鱼眼相机_Arnold(C4DToA)阿诺德渲染教程(51) – 常规摄像机 persp_camera 官方文档...
  20. SELECT... FOR UPDATE 排他锁

热门文章

  1. 配置gitLab的邮件服务,并开启邮箱的验证通知功能
  2. MongoDB——聚合管道之$group操作
  3. 我为App做测试---搜狐新闻(1)
  4. 模拟退huo算法的特点_模拟退火算法(有完整实例源代码)
  5. 电脑网络问题——IPv4无Internet访问权限
  6. Vision MLP(MLP-Mixer,RepMLP,ResMLP,gMLP,aMLP)
  7. 【性能优化】记录一次YounGC峰值优化
  8. 射线检测C语言,Unity - Raycast 射线检测
  9. html旋转音乐图标播放器,css特效之旋转音乐播放器
  10. java word 分段符,Word2013文档中插入分隔符(分节符)的方法