scrapy框架_Python:Scrapy框架

 Scrapy是一个适用爬取网站数据、提取结构性数据的应用程序框架,它可以应用在广泛领域:Scrapy 常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。通常我们可以很简单的通过 Scrapy 框架实现一个爬虫,抓取指定网站的内容或图片。尽管Scrapy原本是设计用来屏幕抓取(更精确的说,是网络抓取),但它也可以用来访问API来提取数据。

  • Scrapy的安装 && 部署

  • 爬虫案例库

Body

安装

1、windows 安装

    安装 Twisted 模块

    下载地址:

 https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted

68fe90c760311ac7ef1c35da998fd618.png

根据python版本下载对应版

笔者为python3.6

c8b02bcb78159e54984a869b9277e887.png

下载完成后,放置一个爬虫的工作目录(笔者任意新建的)

然后在对应的 cmd 打开,(什么是cmd笔者不多说)

推荐建立一个虚拟环境(非必须,但推荐)

算了,后面的上视频

pip install ./T......(Tab键)pip install scrapypip install pywin32

windows部署就是这么简单

2、Ubuntu 安装

    前提是已经安装好python3 与 pip

    1、安装依赖(来自:官方文档)

~$sudo apt-get install python3 python3-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev

    2、安装 Scrapy 

~$sudo pip3 install scrapy

3、CentOS 安装

    前提是已经安装好python3 与 pip

~$sudo pip3 install scrapy

部署

创建Scrapy项目

scrapy startproject Democd Demoscrapy genspider cb 'cloudbyte.club'

689486d4227c57b15100a154760e7bdc.png

项目目录结构如图:

  • cb.py  编写代码逻辑

  • items.py  预设数据变量(可不使用)

  • middlewares.py  爬虫中间件(一般用不着)

  • pipelines.py 数据处理的地方

  • settins.py 全局配置

** 此下为笔者记录(笔者自己需要)

  • settings.py

USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36'ROBOTSTXT_OBEY = FalseLOG_LEVEL = 'WARNING'COOKIES_ENABLED = FalseDOWNLOAD_DELAY = 3ITEM_PIPELINES = {   'Demo.pipelines.DemoPipeline': 300,}

pipelines.py

import pymysql, timefrom pymongo import MongoClientclass DemoPipeline:    def open_spider(self, spider):        '''在爬虫开启的时候执行一次,仅执行一次'''        self.start = time.time()        # 连接数据库(地址,用户名,密码,名字)        self.db = pymysql.connect("localhost", "root", "root", "book", charset="utf8")        # 创建一个游标对象        self.cur = self.db.cursor()        # 连接 MongoDB        self.client = MongoClient(host="127.0.0.1", port=27017)        self.collection = self.client['']['']        print('MySQL 连接成功!')        print('MongonDB 连接成功!')        self.i = 0    def close_spider(self, spider):        '''在爬虫结束时执行一次'''        # 关闭游标        self.cur.close()        # 关闭数据库        self.db.close()        print('\n' + '爬取完成!' + '耗时:', time.time() - self.start)    def process_item(self, item, spider):        self.i += 1        data_list = [(), ]        data_dict = {}        try:            self.cur.executemany(                "INSERT INTO  () VALUES ()",                data_list)            self.db.commit()        except Exception as e:            self.db.rollback()            print("MySQL 数据保存失败!")            print(data_list)            print(e)        try:            self.collection.insert(data_dict)        except Exception as e:            print("MongoDB数据保存失败!")            print(data_dict)            print(e)        return item

案例库

https://github.com/huangsv/pythonSpider

8b3158bcea5120a0476d7d09a82f2f94.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506157.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql数据库二进制_Mysql数据库简单安装(二进制)

二进制安装:[rootlufengcentos ~]# mkdir /home/lufeng/tools -p[rootlufengcentos ~]# cd /home/lufeng/tools[rootlufengcentos tools]# rz[rootlufengcentos tools]# tar xf mysql-5.5.49-linux2.6-x86_64.tar.gz[rootlufengcentos tools]# mkdir -p /applicatio…

python处理时间和日期_python时间和日期的处理

时间概念时间戳:格林威治时间1970年01月01日00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数元组struct_time:python定义了一个时间类,包含9个属性:属性描述tm_year年tm_mon月,范围1~12tm_mday日&#…

python求两数之和的命令_数学建模:科学计算Python2小时-Python基础

这一部分主要面向数模活动中的python基础知识进行讨论作者系列文章(科学计算Python2小时)目录:李似:科学计算Python2小时-前言与目录​zhuanlan.zhihu.com首先要说明的是,目前常用的Python版本包括Python2和Python3,二者有一些语法…

python源码包安装_源码包安装python2.7.6和ipython1.2.1

1. CentOS 6.X的安装就不多说2.安装包Python2.7.6 和Ipython的下载官网都有,自行下载。注意,不要去卸载系统自带的python程序,在CentOS6.X中python为2.6.X的版本3.解压源码包tar xf Python-2.7.6.tar.xz -C /usr/local/ #解压pythontar xf…

c#+mysql图片存数据库_C#图片存入数据库及其读出显示

<1>将图片转换成二进制插入数据库FileStream fs new FileStream("D:\\Add.ico",FileMode.Open);byte[] imagebytes new byte[fs.Length];BinaryReader br new BinaryReader(fs);imagebytes br.ReadBytes(Convert.ToInt32(fs.Length)); //将图片转换成二进…

python编程计算前30项的和_Python 程序员需要知道的 30 个技巧

如果你让一个 Python 程序员说一下 Python 的优势&#xff0c;他会说简洁以及高可读是最有影响力的优势。为证明上述两点&#xff0c;在这个 Python 教程里&#xff0c;我们将聊聊许多基本的 Python 建议和技巧。我们从开始使用 Python 便收集这些有用的捷径(贴士与技巧)。分享…

python傅里叶逆变换_OpenCV-Python系列之傅里叶变换

傅里叶变换我们生活在时间的世界中&#xff0c;早上7:00起来吃早饭&#xff0c;8:00去挤地铁&#xff0c;9:00开始上班。。。以时间为参照就是时域分析。但是在频域中一切都是静止的&#xff01;可能有些人无法理解&#xff0c;我建议大家看看这个文章&#xff0c;写的真是相当…

空白世界地图打印版_洪恩识字卡1300字十字帖+绘本,可打印成册

洪恩识字卡电子版资源&#xff0c;共1300字&#xff0c;无拼音和升级版带拼音都有&#xff0c;可直接打印&#xff0c;可分享免费送我在app中无意洪恩识字这个宝藏app&#xff0c;识字是想着孩子能早日实现自由阅读&#xff0c;可是一直对着电子设备伤眼晴&#xff0c;于是找了…

transferto的流这么关闭_Java 9中InputStream的transferTo()方法的重要性?

在Java 9中&#xff0c;transferTo()方法已添加到InputStream类中。该方法已用于在Java中将数据从输入流复制到输出流。这意味着它将从输入流中读取所有字节&#xff0c;然后按读取顺序将字节写入输出流。语法public long transferTo(OutputStream out) throws IOException示例…

python的selenium模块博客园_selenium 模块的使用

一、为什么会用 selenium 模块&#xff1a;运用过程中遇到错误:Traceback (most recent call last):File "C:\Users\Administrator\AppData\Roaming\Python\Python37\site-packages\selenium\webdriver\common\service.py", line 76, in startstdinPIPE)File "C…

java三目运算_Java中的三目运算符 详解

对于有些选择分支结构,可以使用简单的条件运算符来代替. 如:if(amina;elseminb;可以用下面的条件运算符来处理min(a其中"(a条件运算符由两个符号组成"?"和":", 要求有3个操作对象,所以也叫它三目运算符,它是C语言中唯一的三目运算符.它的一般形式为:…

java exception子类_Java异常 Exception类及其子类(实例讲解)

C语言时用if...else...来控制异常&#xff0c;Java语言所有的异常都可以用一个类来表示&#xff0c;不同类型的异常对应不同的子类异常&#xff0c;每个异常都对应一个异常类的对象。Java异常处理通过5个关键字try、catch、finally、throw、throws进行管理。基本过程是用try包住…

操作系统实验读者写者程序源码_SAST Weekly | STM32F103系列开发板移植华为LiteOS操作系统...

SAST weekly 是由电子工程系学生科协推出的科技系列推送&#xff0c;内容涵盖信息领域技术科普、研究前沿热点介绍、科技新闻跟进探索等多个方面&#xff0c;帮助同学们增长姿势&#xff0c;开拓眼界&#xff0c;每周更新&#xff0c;欢迎关注&#xff01;欢迎愿意分享知识的同…

java 二进制 文件比较_Java中对文件的读写操作之比较

Java 中对文件的读写操作之比较作者&#xff1a;Jeru Liu日期&#xff1a;November 29,2000版本&#xff1a;1.0纪念在chinaasp积分过一百呕心原创一篇(Java 中对文件的读写操作之比较)拿分好难呀&#xff0c;555~~~&#xff0c;不知道那些几千分的老妖们是怎么灌水的。Java 对…

python爬虫的技能_关于 Python 爬虫可能涉及到的技能点

一.颜色捕捉import cv2import numpy as npif name main:Img cv2.imread(./da_pic.jpg)#读入一幅图像kernel_2 np.ones((2,2),np.uint8)#2x2 的卷积核kernel_3 np.ones((3,3),np.uint8)#3x3 的卷积核kernel_4 np.ones((4,4),np.uint8)#4x4 的卷积核if Img is not None:#判断…

java 远程调试spark_spark开启远程调试

一.集群环境配置#调试Master&#xff0c;在master节点的spark-env.sh中添加SPARK_MASTER_OPTS变量export SPARK_MASTER_OPTS"-Xdebug -Xrunjdwp:transportdt_socket,servery,suspendy,address10000"#调试Worker&#xff0c;在worker节点的spark-env.sh中添加SPARK_WO…

python 控件id_查看控件id的工具

在Android SDK下提供了两个工具可以来查看控件的id&#xff0c;在Android SDK目录下的tools字文件夹下可以找到这两个工具&#xff0c;hierarchyviewer.bat和uiautomatorviewer.bathierarchyviewer.bat用法介绍Hierarchy Viewer只能连接Android开发版手机或是模拟器&#xff0c…

java判断方法_Java常用的判断方法

/*** 构建长度为3的数字字符串** param number* return*/private static String constructNumber(int number) {String result String.valueOf(number);// 数字字符串长度不足三位&#xff0c;前几位均补0int length result.length();for (int i 0; i < 3 - length; i) {…

java8源代码_java8 源码解读

关键字&#xff1a;native 、transient、native &#xff1a;Java平台有个用户和本地C代码进行互操作的API&#xff0c;称为Java Native Interface (Java本地接口)。更多参考&#xff1a;https://www.cnblogs.com/KingIceMou/p/7239668.htmltransient&#xff1a;Java中transie…

web中间件_常见web中间件拿shell

1.weblogic后台页面&#xff1a;(http为7001&#xff0c;https为7002)Google关键字&#xff1a;WebLogic Server AdministrationConsole inurl:console默认的用户名密码1、用户名密码均为&#xff1a;weblogic2、用户名密码均为&#xff1a;system3、用户名密码均为&#xff1a…