周末很晚了,不详细说明了,这里附上代码,可供参考下
二、这是项目结构
三、根据初始化的项目,只需修改两处即可
settings.py 和 jdksplider.py,别关注名字,本来我是准备爬取 Oracle官网的 JDK 的相关数据的,这里稍微麻烦了一些,为了尽快写出 Demo 示例,就找了个文章网站(CSDN)爬取了…
# -*- 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'
}
# -*- 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())