最近一周出去旅游,把正事给忘了。
今天学的是scrapy对于scrapy我还真的是第一次认真的接触,它于之前我所接触的网络爬虫的写法完全不一样,(感觉用scrapy才是一个程序员该有的样子)当然也是初次体验这种写法感觉还是挺陌生的,有好多的东西都感觉根本没有接触过。
而且目前我所接触的学习资料也是非常有限,学习资料也是一概而过,今天就先把scrapy的基本情况给大家介绍一下吧,我感觉今天的给读者也不会有太大的帮助。
最简单的安装方式:在window操作系统中打开终端输入 pip install scrapy 插件比较多需要等待一段时间。
如果在pip install scrapy安装的过程中出现部分插件与window不兼容的情况(在window7 中会有少许的插件与操作系统不兼容)那么我们需要手动下载,给各位一个网站在网站中查找自己所缺少的插件选择相应的版本下载,在下载完成之后,先在终端移动到文件的位置,输入pip install 。。。。 你所下载的文件的全部名称。
之后再次输入 pip install scrapy,这样基本上就是差不多了。
首先我们在终端输入
scrapy startproject xxxx xxxx为爬虫工程的名称
You can start your first spider with:
cd yey58
scrapy genspider example example.com
然后cd 进入爬虫工程内
输入 scrapy genspider spider_city_58 58.com
scrapy genspider 爬虫名称 所要爬取的网站
然后会得到一下的信息:
scrapy genspider spider_city_58 58.com
Created spider 'spider_city_58' using template 'basic' in module:
yey58.spiders.spider_city_58
你会在终端得到以上的信息,然后根据信息,进行文件的移动(忽略我的文件名称 yey58)
下面是scrapy命令生成的文件结构。
其中,(以及一般的Scrapy使用)中比较重要的几个文件如下所示。
items.py:该文件定义了待抓取域的模型。
settings.py:该文件定义了一些设置,如用户代理、爬取延时等。
spiders/:该目录存储实际的爬虫代码。
另外,Scrapy 使用scrapy.cfg设置项目配置,pipelines.py处理要
抓取的域,middlewares.Py控制请求和响应中间件。
# -*- coding: utf-8 -*-
import scrapy
class SpiderCity58Spider(scrapy.Spider):
name = 'spider_city_58'
allowed_domains = ['58.com']
start_urls = ['http://58.com/']
def parse(self, response):
print('我进入了解析器')
# scrapy自动给生成的python爬虫
# 我们使用scrapy的启动命令的时候,需要知道他的name属性
# 再利用name属性去决定启动的那个爬虫
# 首先 从start_url里面读取链接
# 然后 自动调用start_request函数
# 最后 此函数请求的结果自动调用默认的解析器parse
# 爬虫名称:name属性
# 启动方法:start_requests()
# 默认解析器方法:pares()
# 启动链接列表:start_urls属性
然后我们创建一个python文件main用于将文件运行:
from scrapy import cmdline
cmdline.execute('scrapy crawl spider_city_58'.split())
#['scrapy', 'crawl', 'spider_city_58']
上文中的两种方法都可以
运行的最后结果如图所示
简单记录一下这几天处理阿里云ssl证书续费的过程遇到的问题,希望对有疑问的同学有所帮助。首先证书快到截止日期阿里云会短信通知进行提前续费。在快过期的证书旁边会有一个续费的按钮(数字证书管理服务/ssl证书/证书管理)点击续费需要进行相关设置,一般保持默认即可,点击确定就会生成订单,支付成功之后,大概五分钟左右在证书管理列表中会出现一条新的证书记录,状态为已签发;续费的证书相当于是新的证书,并不是在原来的证书基础上延长有效期。故证书管理中会显示所有的证书记_阿里云证书续费
相关推荐随着语音巨头抢占语音入口,蓝牙设备智能化已成为下一波竞争的关键,而身处其中的无线蓝牙耳机正披着“智能...发表于 2018-04-04 10:34•37次阅读 训练数据来自于标本数据和一系列真实样本数据包括包含214种植物的Herbarium255 数据库,包...发表于 2018-04-03 16:28•278次阅读 ..._alexa语音助手原理
FFMPEG结构体分析:AVFrameFFMPEG结构体分析:AVFormatContextFFMPEG结构体分析:AVCodecContextFFMPEG结构体分析:AVIOContextFFMPEG结构体分析:AVCodecFFMPEG结构体分析:AVStreamFFMPEG结构体分析:AVPacket_ffmpeg4.2.2 结构体分析
查看python3.4.1文档,发现对于decimal模块的讲解非常多,由此可见其功能也很强大(下面算是把我认为比较重要的半翻译半学习吧~)。文档关于decimal模块的总解释是Decimal fixed point and floating point arithmetic,我理解的是固定小数点和浮点运算。头加上from decimal import * 即可调用decimal模块中的内容。1...._python decimal函数
// IsAjaxRequest checks and returns whether current request is an AJAX request.func (r *Request) IsAjaxRequest() bool { return strings.EqualFold(r.Header.Get("X-Requested-With"), "XMLHttpRequest")}根据X-Requested-With的值为XMLHttpRequest判断是否为ajax请求..._beego判断请求类类型
CIFAR-10 该数据集共有60000张彩色图像,这些图像是32*32,分为10个类,每类6000张图。这里面有50000张用于训练,构成了5个训练批,每一批10000张图;另外10000用于测试,单独构成一批。测试批的数据里,取自10类中的每一类,每一类随机取1000张。抽剩下的就随机排列组成了训练批。注意一个训练批中的各类图像并不一定数量相同,总的来看训练批,每一类都有5000张图。...
错误:队列不可编辑对这个问题的错误跟踪非常清楚。我甚至感到惊讶,但排队真的不可忍受。在修改测试代码Queue主要用于在进程之间通信项。但是您的代码只是做了一些事情,并从中读取了一些属性,所以没有什么可以交流的。在因此我修改了你的代码。在代码中定义的对象类工作队列被iterable替换,在本例中它是一个生成器,能够生成任何数量的Object类型的项。在保留使用pool.map。它从iterable生..._python 多车队列环境包
1.通过HTML标签创建数据表格时使用formatter<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title></title> <link rel="stylesh..._easyui grid行格式化
book:::Book{id=null, type='类别111', name='测试名称', description='测试描述数据'}postman中发送post请求保存数据到数据库中文乱码。以为是数据库的问题:改成这个也没解决。重新启动之后问题解决。_postman请求中文乱码
越来越多的人在提“移动端的下半场”、“Android 开发的焦虑”之类的,也有人在喊“技术天天在变,学也学不完”,“昨天 Kotlin 今天 Flutter”。其实我却认为,如果你技术达到了一定程度,你无需太过在意这些。移动端真正进入下半场了吗?于我看来并没有,最多说“Android 技术的探索”进入了下半场,而整个市场还是乐观的。以前是 BAT 的天下,而近两年出来越来越多的独角兽:头条、抖音、拼多多、快手、小猿搜题等,这些公司的业务都在移动端上,他们需要招聘更多的移动端人才。如果真要说下半场,只能说很
前言 我的blog以前很长 一段时间关注的都是C++中的技术&细节,乃至于读者和应者都寥寥。然而5月份的时候写的一篇“你应当如何学习C++”,阅读量却达到了3万多, 在blog上所有文章中却是最高的(且远远超过了第二位);评论数目也有一百多。为什么独独这篇能够激起这么多的回应,想必是国内的C++社群被C++压 抑太久,或者,严格来说,是被C++的教育方式压抑太久。实际上,不管是在
Hi,大家好,这里是丹成学长,今天向大家介绍一个学长做的单片机项目基于单片机的自动浇花灌溉系统设计大家可用于 课程设计 或 毕业设计单片机-嵌入式毕设选题大全及项目分享:https://blog.csdn.net/m0_71572576/article/details/1254090521、采用stm32单片机作为控制单元;2、采用LCD1602液晶进行数据显示;3、采用土壤湿度传感器+ADC0832检测湿度,当湿度低于设置湿度下限值时,自动控制继电器开启水泵进行灌溉,同时蜂鸣器声光报警;当湿度高于设置湿度_基于单片机的植物浇水系统