一、环境搭建,参考上篇,python快速构建爬虫项目Scrapy,和Scrapy项目结构分析

周末很晚了,不详细说明了,这里附上代码,可供参考下

二、这是项目结构

三、根据初始化的项目,只需修改两处即可

settings.pyjdksplider.py,别关注名字,本来我是准备爬取 Oracle官网的 JDK 的相关数据的,这里稍微麻烦了一些,为了尽快写出 Demo 示例,就找了个文章网站(CSDN)爬取了…

settings.py,代码如下

# -*- coding: utf-8 -*-

BOT_NAME = 'jdk_scrapy'

SPIDER_MODULES = ['jdk_scrapy.spiders']
NEWSPIDER_MODULE = 'jdk_scrapy.spiders'

# Obey robots.txt rules,只改了改了这里
ROBOTSTXT_OBEY = False

# Override the default request headers:还有这里
DEFAULT_REQUEST_HEADERS = {
  'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'Accept-Language': 'en',
	'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'
}

jdksplider.py,代码如下

# -*- coding: utf-8 -*-
import scrapy
from scrapy.http.response.html import HtmlResponse
from scrapy.selector.unified import SelectorList


class JdkspliderSpider(scrapy.Spider):
    name = "jdksplider"
    allowed_domains = ["https://www.csdn.net/"]
    start_urls = ['https://www.csdn.net/']

    def parse(self, response):
        duanzidiv = response.xpath("//ul[@class='feedlist_mod home']/li")
        for dz in duanzidiv:
            dz_xpath = dz.xpath(".//a//text()").get()
            print(dz_xpath)

四、命令行运行项目

scrapy crawl jdksplider

即可在控制台打印,如下数据

D:\learningsoftwares\envs\py36\python.exe D:/Python/scrapy/jdk_scrapy/start.py
2019-07-20 22:37:55 [scrapy.utils.log] INFO: Scrapy 1.3.3 started (bot: jdk_scrapy)
2019-07-20 22:37:55 [scrapy.utils.log] INFO: Overridden settings: {'BOT_NAME': 'jdk_scrapy', 'NEWSPIDER_MODULE': 'jdk_scrapy.spiders', 'SPIDER_MODULES': ['jdk_scrapy.spiders']}
2019-07-20 22:37:55 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.corestats.CoreStats',
 'scrapy.extensions.telnet.TelnetConsole',
 'scrapy.extensions.logstats.LogStats']
2019-07-20 22:37:56 [scrapy.middleware] INFO: Enabled downloader middlewares:
['scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware',
 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware',
 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware',
 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware',
 'scrapy.downloadermiddlewares.retry.RetryMiddleware',
 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware',
 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware',
 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware',
 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware',
 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware',
 'scrapy.downloadermiddlewares.stats.DownloaderStats']
2019-07-20 22:37:56 [scrapy.middleware] INFO: Enabled spider middlewares:
['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware',
 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware',
 'scrapy.spidermiddlewares.referer.RefererMiddleware',
 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware',
 'scrapy.spidermiddlewares.depth.DepthMiddleware']
2019-07-20 22:37:56 [scrapy.middleware] INFO: Enabled item pipelines:
[]
2019-07-20 22:37:56 [scrapy.core.engine] INFO: Spider opened
2019-07-20 22:37:56 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2019-07-20 22:37:56 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023
2019-07-20 22:38:10 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.csdn.net/> (referer: None)

                                53K!拿下阿里Python岗,这些技术点全考了!                            

                                CSDN日报190719:字节跳动面经来啦!!!                            
None

                                BAT 力捧的 AI 项目再次爆发,这些程序员都受影响!                            

                                General information (1)                            

                                资讯--2019年6月                            

                                资讯类网站增量式爬虫                            
None

                                【IT资讯】全新编程语言V发布                            

                                三款大气资讯类wordpress主题                            

                                速记工具原来这么好用,错过了让你抱憾终身                            

                                华为Mate 20 Pro迎来重磅福利,专属免费增值服务,知道就是赚到                            

                                苹果库克慌了!iPhone XR降价也没人买,原来是华为放大招了                            
None

                                华为手机自带语音转文字的功能,转换方法如下                            

                                手机录音转文字怎么做?3分钟轻松完成录音转文字教程                            

                                微信不小心删除的好友和群聊,如何偷偷的加回来?                            

                                如何将语音翻译成中文、语音转文字怎么做                            

                                资讯|某搜索引擎推广企业定制化内训圆满成功                            

                                进退博弈:恒指7.12号早盘资讯及交易计划                            
None

                                云杰恒指:7.19恒指期货早盘资讯                            

                                进退博弈:恒指7.16号早盘资讯及操作建议                            

                                《Excel函数与公式速查手册》赛贝尔资讯(编著)                            

                                19年关于跨境电商,它的一些资讯干货,你们了解吗?                            

                                云杰恒指:6.20恒指期货早盘资讯                            

                                资讯|实战公开课《高效PMO建设与发展》圆满结束                            
None

                                程序人生(项目导入依赖)                            

                                程序人生之思考人生                            

                                我的程序人生:码农                            

                                两场雨的程序人生                            

                                程序人生-杂谈python                            

                                [程序人生]程序员的一生如何保障?                            
None

                                启航 —— 记 —— 第二次自考的反思:自考与自我改造的困境                            

                                梦想还是要有的,即使被摧残着!                            

                                开启技术之旅——我的第一篇博客                            

                                【程序人生】大三Unity客户端第一次找工作的经历                            

                                【程序人生】Java Web 开发脚手架调研                            

                                软件设计师考试经历                            

                                程序帝国四大操作之单表新增                            

                                【程序人生】 简单解读linux shell脚本语言和lmdb数据库                            

                                程序帝国四大操作之单表修改                            

                                18年往届菜鸟的编程进阶路                            
刚刚阅读在这里,点击刷新
2019-07-20 22:38:11 [scrapy.core.engine] INFO: Closing spider (finished)
2019-07-20 22:38:11 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{'downloader/request_bytes': 292,
 'downloader/request_count': 1,
 'downloader/request_method_count/GET': 1,
 'downloader/response_bytes': 29882,
 'downloader/response_count': 1,
 'downloader/response_status_count/200': 1,
 'finish_reason': 'finished',
 'finish_time': datetime.datetime(2019, 7, 20, 14, 38, 11, 83274),
 'log_count/DEBUG': 2,
 'log_count/INFO': 7,
 'response_received_count': 1,
 'scheduler/dequeued': 1,
 'scheduler/dequeued/memory': 1,
 'scheduler/enqueued': 1,
 'scheduler/enqueued/memory': 1,
 'start_time': datetime.datetime(2019, 7, 20, 14, 37, 56, 308131)}
2019-07-20 22:38:11 [scrapy.core.engine] INFO: Spider closed (finished)

Process finished with exit code 0

五、这里还有个简单的启动脚本,就不用使用命令行启动项目了,

start.py,开始不能运行,后来,找到原因了。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 开始这里不能运行,不知道为什么???
# 后来问题解决,是 pip 和 conda 安装的scrapy,是不一样的,环境设为py3.6版本,用conda install scrapy 重新安装的
from scrapy import cmdline
cmdline.execute("scrapy crawl jdksplider".split())