博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Scrapy-01-追踪爬取
阅读量:5215 次
发布时间:2019-06-14

本文共 1656 字,大约阅读时间需要 5 分钟。

  • 目的:利用scrapy完成盗墓笔记小说的抓取
  • 创建项目:
    • scrapy   startproject    books
    • cd  books
    • scrapy   genspider    dmbj
  • 编写parse方法
    • 1 # -*- coding: utf-8 -*- 2 import scrapy 3  4  5 class DmbjSpider(scrapy.Spider): 6     name = 'dmbj' 7     allowed_domains = ['www.cread.com/chapter/811400395/69162457.html'] 8     start_urls = ['http://www.cread.com/chapter/811400395/69162457.html/'] 9 10     def parse(self, response):11         title = response.xpath('//h1/text()').extract_first()12         content = response.xpath('//div[@class="chapter_con"]/text()').extract_first()13         with open('{}.txt'.format(title), 'w') as f:14             f.write(content)

      观察网页源码,利用xpath对信息进行提取,然后写入一个txt文本文件

    • 追踪爬取,在完成对单页的爬取之后,接下来对整篇小说进行爬取
    • 首先分析网页:
      • 单页爬取已经完成,想要爬取下一章就得找到下一章的url
      • 网页的最后又一个"下一章"的按钮,我们拿到按钮里面的href属性的值就行了
      • 注意href的值为相对url,我们需要将完整的url拼接起来
      • 利用response.urljoin(你的相对url),即可完成完整的url拼接
    • 提取到下一页的绝对url之后利用scrapy.Request方法来对下一页进行爬取
    • 这里的allowed_domains 要改成"www.cread.com"
    • 1 # -*- coding: utf-8 -*- 2 import scrapy 3  4  5 class DmbjSpider(scrapy.Spider): 6     name = 'dmbj' 7     allowed_domains = ['www.cread.com'] 8     start_urls = ['http://www.cread.com/chapter/811400395/69162457.html/'] 9 10     def parse(self, response):11         title = response.xpath('//h1/text()').extract_first()12         content = response.xpath('//div[@class="chapter_con"]/text()').extract_first()13         with open('{}.txt'.format(title), 'w') as f:14             f.write(content)15         next_url = response.xpath('//a[@id="go_next"]/@href').extract_first()16         url = response.urljoin(next_url)17         return scrapy.Request(url)

       

    • 最后scrapy crawl dmbj   运行爬虫开始抓取

转载于:https://www.cnblogs.com/ivy-blogs/p/10884286.html

你可能感兴趣的文章
2018-2019-2 网络对抗技术 20165202 Exp3 免杀原理与实践
查看>>
NPM慢怎么办 - nrm切换资源镜像
查看>>
CoreData 从入门到精通(四)并发操作
查看>>
Swift - UIView的常用属性和常用方法总结
查看>>
Swift - 异步加载各网站的favicon图标,并在单元格中显示
查看>>
Java编程思想总结笔记Chapter 5
查看>>
[LeetCode]662. Maximum Width of Binary Tree判断树的宽度
查看>>
WinForm聊天室
查看>>
Python 从零学起(纯基础) 笔记(一)
查看>>
【Python学习笔记】1.基础知识
查看>>
梦断代码阅读笔记02
查看>>
Java 线程安全问题
查看>>
selenium学习中遇到的问题
查看>>
大数据学习之一——了解简单概念
查看>>
P1-13:集成日志组件 logback 2彩色日志
查看>>
Linux升级内核教程(CentOS7)
查看>>
Lintcode: Partition Array
查看>>
分享适合个人站长的5类型网站
查看>>
类别的三个作用
查看>>
【SICP练习】85 练习2.57
查看>>