1、创建Scrapy项目

scapy startproject dongguan

2.进入项目目录,使用命令genspider创建Spider

scrapy genspider -t crawl sunwz "wz.sun0769.com"

3、定义要抓取的数据(处理items.py文件)

# -*- coding: utf-8 -*-
import scrapyclass DongguanItem(scrapy.Item):# 贴子编号number = scrapy.Field()# 贴子标题title = scrapy.Field()# 贴子内容content = scrapy.Field()# 贴子urlurl = scrapy.Field()

4、编写提取item数据的Spider(在spiders文件夹下:sunwz.py)

# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
# 如果下面在pycharm中有红色波浪线,参照这个设置:https://blog.csdn.net/z564359805/article/details/80650843
from dongguan.items import DongguanItemclass SunwzSpider(CrawlSpider):name = 'sunwz'allowed_domains = ['wz.sun0769.com']start_urls = ['http://wz.sun0769.com/index.php/question/report?page=0']# LinkExtractor()贴子的匹配规则,遵循正则rules = (# 没有callback,follow默认True,有callback默认为FalseRule(LinkExtractor(allow=r"report\?page=\d+"),follow=True),Rule(LinkExtractor(allow=r"html/question/\d+/\d+.shtml"), callback='parse_item',follow=False),# 发现中间的网站贴子地址第60510页左右和之前的不一样例如:http://d.wz.sun0769.com/index.php/question/show?id=267700,多加一个规则Rule(LinkExtractor(allow=r"/question/show\?id=\d+"), callback='parse_item',follow=False),)print("数据处理中……")def parse_item(self, response):item = DongguanItem()# 每个贴子中的标题,strip()去除首尾空格item['title'] = response.xpath('//div[@class="pagecenter p3"]//strong/text()').extract()[0].strip()# 根据标题提取出编号item['number'] = item['title'].split(":")[-1].strip()# 先取出贴子内容有图的情况content= response.xpath('//div[@class="contentext"]/text()').extract()if len(content) == 0:# 代表没有图content = response.xpath('//div[@class="c1 text14_2"]/text()').extract()# content为列表,通过join方法拼接为字符串,并去除首尾空格,以及将内容中的空格去掉item['content'] = "".join(content).strip().replace("\xa0","")else:print("此贴子有图片…………")item['content'] = "".join(content).strip().replace("\xa0","")# 贴子的链接地址item['url'] = response.urlyield item

5.处理pipelines管道文件保存数据,可将结果保存到文件中(pipelines.py)

# -*- coding: utf-8 -*-
import json# 转码操作,继承json.JSONEncoder的子类,在json目录下的encoder.py中
class MyEncoder(json.JSONEncoder):def default(self, o):if isinstance(o, bytes):return str(o, encoding='utf-8')return JSONEncoder.default(self, o)class DongguanPipeline(object):def __init__(self):self.file = open("dongguan.json", 'w', encoding='utf-8')def process_item(self, item, spider):text = json.dumps(dict(item), ensure_ascii=False, cls=MyEncoder) + '\n'self.file.write(text)return itemdef close_spider(self, spider):print("数据处理完毕,谢谢使用!")self.file.close()

6.配置settings文件(settings.py)

# Obey robots.txt rules,具体含义参照:https://blog.csdn.net/z564359805/article/details/80691677
ROBOTSTXT_OBEY = False# Override the default request headers:添加User-Agent信息
DEFAULT_REQUEST_HEADERS = {'User-Agent': 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0);',# 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',# 'Accept-Language': 'en',
}# Configure item pipelines去掉下面注释,打开管道文件
ITEM_PIPELINES = {'dongguan.pipelines.DongguanPipeline': 300,
}# 还可以将日志存到本地文件中(可选添加设置)
LOG_FILE = "dongguanlog.log"
LOG_LEVEL = "DEBUG"

7.以上设置完毕,进行爬取:执行项目命令crawl,启动Spider:

scrapy crawl sunwz

Scrapy项目(东莞阳光网)---利用CrawlSpider爬取贴子内容,不含图片相关推荐

  1. Jsoup爬取网络内容(包括图片文件),保存到本地和保存到数据库(一)

    背景: 项目需要某个区县的天气数据,需要从中国气象局的官网中进行爬取.但是,中国气象局服务器调用接口返回的数据没有我想要的信息,比如说是未来24小时的天气温度,气压,风速等信息,这些数据接口中都没有, ...

  2. 爬虫Scrapy框架学习(五)-东莞阳光热线问政平台爬取案例

    本案例通过典型的scrapy框架Spider类展现了一个模板式的爬虫过程,请读者细细体会,此案例为必会项目,按照本博客配置,完美通过.本文还对item做了限制,编写item文件的主要作用是防止爬取数据 ...

  3. 利用Crawlspider爬取腾讯招聘数据(全站,深度)

    需求: 使用crawlSpider(全站)进行数据爬取 - 首页: 岗位名称,岗位类别 - 详情页:岗位职责 - 持久化存储 代码: 爬虫文件: from scrapy.linkextractors ...

  4. 如何用python爬视频_科学网—利用python爬取一个小视频 - 李鸿斌的博文

    工具 : requests 库 解析: beautifulsoup 任务: 视频抓取 1,分析目标网站 寻找一个虚拟的头文件 User-Agent: Mozilla/5.0 (Windows NT 6 ...

  5. 采用scrapy对秀动网演出信息爬取

    爬取结果 mongodb数据库: spider文件 分析秀动网站页面的布局,准备爬取我们需要的信息. 没有粘贴代码,简单讲解一下爬取上海所有的演出信息. parse方法里面定义 页面演出信息的列表: ...

  6. 使用scrapy框架实现,房天下网站全站爬取,详情,动态,评论,户型,图片.

    scrapy  实现代码,代码有点多,没有优化,,下面有链接,不懂得留言 Github全部代码,https://github.com/Agile929/scrapy_fang # -*- coding ...

  7. 利用python爬取京东平台评论及图片并进行分析

    一.背景及目的 在淘宝.京东等网络平台上购物,逐渐成为大众化的购物方式.但假冒伪劣产品在这个摸不着实物的购物平台严重危害着消费者的购物体验,即使我们可以通过七天无理由退货退款来维护我们的合法权益,但是 ...

  8. 利用python爬取淘宝的商品图片!

    代码 from selenium import webdriver from selenium.webdriver.common import keys import time import requ ...

  9. 利用python爬取淘宝的商品图片

    代码 from selenium import webdriver from selenium.webdriver.common import keys import time import requ ...

  10. python爬取王者皮肤别人可以看见效果吗_利用python爬取王者荣耀英雄皮肤图片

    前两天看到同学用python爬下来LOL的皮肤图片,感觉挺有趣的,我也想试试,于是决定来爬一爬王者荣耀的英雄和皮肤图片. 然后,简单的分析一下结构,看看是否有反爬机制. 之后,在上网查阅资料后,发现所 ...

最新文章

  1. Android 自定义View之3D骰子旋转
  2. 在ubuntu系统荣品开发配套JDK安装
  3. P4313-文理分科【最小割】
  4. 使用junit做其他事情
  5. 如何在Java中将字节数组转换为InputStream和OutputStream
  6. 【转】VNC不同软件之间的联系与区别
  7. 【牛客 - 315C】排列(思维,贪心,同优则立证明法)
  8. 2018我们要赢 (5 分)
  9. Android7.1开机启动wifi adb
  10. 【转】Redis学习---阿里云Redis多线程性能增强版详解
  11. canvas贝塞尔曲线爱心_贝塞尔曲线之爱心点赞代码全解析!| CSDN 博文精选
  12. mongodb仲裁者_真理的仲裁者
  13. scrcpy Device disconnected报错
  14. PHP云招聘系统H5(源码+数据库脚本)
  15. 【软考】系统集成项目管理工程师(十二)项目沟通管理
  16. 缠中说禅《论语》详解:给所有曲解孔子的人
  17. 中国鼠标行业销售动态及营销形势分析报告(新版)2022-2027年
  18. js 点击下载文件、图片
  19. 视杯和视盘分割及分类方法对青光眼诊断的探讨
  20. Netty5的例子,简单介绍Netty的用法

热门文章

  1. 用Python分析《都挺好》中的人物关系
  2. Element的使用
  3. hb100 微波雷达arduino_【Arduino】108种传感器系列实验(03)-微波雷达感应开关...-Arduino中文社区 - Powered by Discuz!...
  4. linux搭建http代理服务器
  5. 硬回车、软回车、java转义字符
  6. Linux系统设置DNS服务器地址
  7. 全国计算机高新技术作用,全国计算机高新技术考试证书作用是什么?
  8. Python控制台打印彩色字符图
  9. 出售计算机广告英文作文,17年6月大学英语四级作文参考范文—二手电脑广告
  10. Git | git的简单使用教程