2022年网络我的网络爬虫学习心得

2022年网络我的网络爬虫学习心得

  • 写在前面
  • 一、心得
  • 二、爬虫项目中所需要的pip模块
    • 1.requests
    • 2.bs4
    • 3.Pandas
    • 4.selenium
    • 5.Scrapy
    • 6.gerapy_auto_extractor
  • 三、简单爬虫实现
    • 1.配置环境
    • 2.简单爬虫实现(mysql)
    • 3.简单爬虫实现(mongo)
  • 四、Scrapy框架爬取海外网文章
    • 1、Scrapy是什么?
      • 1.1 Scrapy概述
      • 1.2 Scrapy五大基本构成:
      • 1.3 建立爬虫项目整体架构图
    • 2、搭建Scrapy框架
      • 2.1 下载安装Scrapy环境
      • 2.2 建立爬虫项目
      • 2.3 配置Scrapy框架
        • (1)items.py的配置
        • (2)middlewares.py的配置
        • (3)pipelines.py的配置
        • (4)settings.py的配置
      • 2.4 创建爬虫python文件
    • 3.编辑爬虫代码
      • 3.1 编辑爬虫代码
      • 3.2 执行爬虫代码
  • 五、Gerapy分布式框架
    • 1.Gerapy概述
    • 2.Gerapy用途
    • 3.搭建Gerapy
    • 4.编辑项目
  • 总结

写在前面

本文主要记录我自己从开始学习Python基础、接触爬虫、初次实现爬虫,再到独立完成爬虫项目并成功爬取以海外网(http://www.haiwainet.cn/)为爬取对象,一来是为了完成老师布置的作业,二来是为了留存下自己的学习记录,以便以后遗忘时重新回顾。随着人工智能的不断发展,爬虫这门技术也越来越重要,很多人都开启了学习爬虫,本文就介绍了一些爬虫学习的基础内容。

一、心得

在大三正式学习Python爬虫前,我在同学和老师们得帮助下,从廖雪峰得官方网站自学了部分的Python知识,还学习了部分C和C++等。
我个人在学习的过程中的体会是:Python是比较入门简单和省力高效的,而C和C++相比,在编程时需要更高的要求和复杂的编程逻辑,不太推荐于新手。但是据我了解,C相比于Python在许多数学方面函数的运算效率上是更高的。所以有句话:“简洁的代码不一定运行效率高”,因此我建议大家在学习编程的开头可以选择Python和C同时进行,一来方便实践编程技巧,二来也可以通过C语言更深刻的理解编程思想,为自己将来的编程大楼打下扎实的基础。
一个好的狙击手一定有一把趁手的武器,编程也是一样。我选择的是VScode,其中有许多优秀的插件,可以帮助我快速打代码。老师还带着我们安装了一些必备的工具,例如Anaconda、Pycharm、Mysql等。
python的功能很多,爬虫也只是其一个很小的功能,不过展开却有很大的学习空间。所以爬虫到底是个什么东西呢?
形象的解释:
 如果我们把互联网比作一张大的蜘蛛网,那一台计算机上的数据便是蜘蛛网上的一个猎物,而爬虫程序就是一只小蜘蛛,沿着蜘蛛网抓取自己想要的猎物/数据。
下面就给出书面化的定义:
 网络爬虫也叫网络蜘蛛,它特指一类自动批量下载网络资源的程序,这是一个比较口语化的定义。
 更加专业和全面对的定义是:网络爬虫是伪装成客户端与服务端进行数据交互的程序。
大数据时代来临,数据就是核心,数据就是生产力,越来越多的企业开始注重收集用户数据,而爬虫技术是收集数据的一种重要手段。一条一条手动记录数据的时代已经过去了,利用计算机进行全自动的记录才是可取的方式。于是,爬虫应运而生。当然,可是执行爬虫任务的不只可以使用Python,PHP,JAVA,C#,C++等同样可以,选择python是因为他相对来说操作比较简单,而且功能比较齐全。
在整个学习爬虫的过程中,特别感谢我的老师手把手带着我们一节节课走过来,还在课下耐心的解答。也感谢我的同学们在我遇到问题的时候不遗余力的帮助。
总而言之,大厦之成非一木之材,功成名就非一时之功,要想学好Python,学好网络爬虫,就得勤学多练,多多实践,遇到不会的问题多自己解决,带着问题学习才是最好的学习。

二、爬虫项目中所需要的pip模块

1.requests

requests是一个很实用的Python HTTP客户端库,爬虫和测试服务器响应数据时经常会用到,requests是Python语言的第三方的库,专门用于发送HTTP请求

2.bs4

Beautiful Soup 库一般被称为bs4库,支持Python3,是我们写爬虫非常好的第三方库。事实上,bs4库 是解析、遍历、维护、“标签树“的功能库。通俗一点说就是: bs4库把html源代码重新进行了格式化,从而方便我们对其中的节点、标签、属性等进行操作。

3.Pandas

Pandas 是基于NumPy的一种工具,该工具是为解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

4.selenium

Selenium 是一个开源测试框架,用来对web应用(比如网站)做自动化测试用的,因为它可以驱动浏览器,诸如Chrome,Firefox,IE等,所以可以较为真实的模拟人自动去点击网站的各个按钮,翻页,填写表单等,这样节省了很多测试时间。

5.Scrapy

Scrapy不是一个函数功能库,而是一个爬虫框架。爬虫框架是实现爬虫功能的一个软件结构和功能组件集合;爬虫框架是一个半成品,能够帮助用户实现专业网络爬虫。

6.gerapy_auto_extractor

gerapy-auto-extractor的Python项目详细描述Gerapy自动提取器这是Gerapy的自动提取器模块

三、简单爬虫实现

1.配置环境

打开WIN+R搜索cmd,输入如下代码。

#pip install pymongo
#pip install pymysql 

2.简单爬虫实现(mysql)

打开WIN+R搜索cmd,输入如下代码。

import requests
from bs4 import BeautifulSoup
import pandas as pd
from urllib import parse
from sqlalchemy import create_engine#%%mysql_name = "root"
mysql_password = "glxy"
mysql_server = "localhost"
engine = create_engine("mysql+pymysql://{}:{}@{}:3306/temp?charset=utf8mb4".format(mysql_name,mysql_password,mysql_server))
#engine = create_engine("mysql+pymysql://【此处填用户名】:【此处填密码】@【此处填host】:【此处填port】/【此处填数据库的名称】?charset=utf8") 
# 例如:engine = create_engine("mysql+pymysql://root:666666@localhost:3306/ajx?charset=utf8")url = "http://health.people.com.cn/GB/408568/index{}.html"
num=1
data = []
while num<=5:url_=url.format(num)html = requests.get(url_)html.encoding = "GB2312"soup = BeautifulSoup(html.text,'lxml')for i in soup.find_all("div",class_="newsItems"):title = i.a.textdate = i.div.texturl_secondclass = parse.urljoin(url_,i.a["href"])#     url = "http://health.people.com.cn" + i.a["href"]data.append((title,date,url_secondclass))df = pd.DataFrame(data,columns=["title","date","url"])print(df)#打印预览#'list' object has no attribute 'to_sql'就是说只有dataframe才能使用to_sqldf.to_sql('people_health2',engine,if_exists='append',index=False,index_label=False)num+=1

结果如图:
在这里插入图片描述

3.简单爬虫实现(mongo)

打开WIN+R搜索cmd,输入如下代码。

import pymongo
import json
import requests
from bs4 import BeautifulSoup
import pandas as pd
from urllib import parse
from sqlalchemy import create_engineclient = pymongo.MongoClient('127.0.0.1',27017)
database = client["NewsData"]
table = database["News"]url = "http://health.people.com.cn/GB/408568/index.html"
html = requests.get(url)
html.encoding = "GB2312"
soup = BeautifulSoup(html.text,'lxml')data = []
for i in soup.find_all("div",class_="newsItems"):title = i.a.textdate = i.div.texturl = parse.urljoin(url,i.a["href"])
#     url = "http://health.people.com.cn" + i.a["href"]data.append((title,date,url))df = pd.DataFrame(data,columns=["title","date","url"])
# dfdata_ = json.loads(df.T.to_json())
data_table.insert_many(data_.values())

结果如图:
在这里插入图片描述

四、Scrapy框架爬取海外网文章

1、Scrapy是什么?

1.1 Scrapy概述

Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试.

其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 后台也应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫.

Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持.

1.2 Scrapy五大基本构成:

Scrapy框架主要由五大组件组成,它们分别是调度器(Scheduler)、下载器(Downloader)、爬虫(Spider)和实体管道(Item Pipeline)、Scrapy引擎(Scrapy Engine)。下面我们分别介绍各个组件的作用。

(1)、调度器(Scheduler):

调度器,说白了把它假设成为一个URL(抓取网页的网址或者说是链接)的优先队列,由它来决定下一个要抓取的网址是 什么,同时去除重复的网址(不做无用功)。用户可以自己的需求定制调度器。

(2)、下载器(Downloader):

下载器,是所有组件中负担最大的,它用于高速地下载网络上的资源。Scrapy的下载器代码不会太复杂,但效率高,主要的原因是Scrapy下载器是建立在twisted这个高效的异步模型上的(其实整个框架都在建立在这个模型上的)。

(3)、 爬虫(Spider):

爬虫,是用户最关心的部份。用户定制自己的爬虫(通过定制正则表达式等语法),用于从特定的网页中提取自己需要的信息,即所谓的实体(Item)。 用户也可以从中提取出链接,让Scrapy继续抓取下一个页面。

(4)、 实体管道(Item Pipeline):

实体管道,用于处理爬虫(spider)提取的实体。主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。

(5)、Scrapy引擎(Scrapy Engine):

Scrapy引擎是整个框架的核心.它用来控制调试器、下载器、爬虫。实际上,引擎相当于计算机的CPU,它控制着整个流程。

1.3 建立爬虫项目整体架构图

本图按顺序说明整个程序执行时候发生的顺序。
注意在调用下载器时,往往有一个下载器中间件,使下载速度提速。
在这里插入图片描述
官网架构图
在这里插入图片描述

2、搭建Scrapy框架

2.1 下载安装Scrapy环境

代码如下(示例):

pip install scrapy==2.6.1

本文作者使用Windows系统,使用组合键Win+R并输入cmd打开终端,并在终端中输入图示代码

结果如图:
结果

2.2 建立爬虫项目

首先进入我们创建爬虫项目的文件夹,点击右键进入Power Shell终端,使用如下代码创建新项目

代码如下(示例):

scrapy startproject NewsHaiwai

在这里插入图片描述

结果如图


2.3 配置Scrapy框架

首先进入我们创建的文件夹,作者使用的软件是VScode
在这里插入图片描述
可以看到,打开我们的NewsHaiwai文件夹,其中配置文件有四个:items.py、middleware.py、pipelines.py、settings.py。

(1)items.py的配置

代码如下(示例):

# -*- coding: utf-8 -*-
# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.htmlimport scrapy
class NewshaiwaiItem(scrapy.Item):# define the fields for your item here like:title = scrapy.Field()#标题url = scrapy.Field()#网址date = scrapy.Field()#日期content = scrapy.Field()#文章正文site = scrapy.Field()#站点item = scrapy.Field()#栏目

本文作者使用Windows系统,使用组合键Win+R并输入cmd打开终端,并在终端中输入图示代码

结果如图:

(2)middlewares.py的配置

首先第一行添加

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

然后在最下边添加Header和IP类:

# 添加Header和IP类
from scrapy.downloadermiddlewares.useragent import UserAgentMiddleware#从scrapy.down...导入中心键
from scrapy.utils.project import get_project_settings
import randomsettings = get_project_settings()
class RotateUserAgentMiddleware(UserAgentMiddleware):def process_request(self, request, spider):referer = request.urlif referer:request.headers["referer"] = refererUSER_AGENT_LIST = settings.get('USER_AGENT_LIST')#创建一个UA列表,每次访问随机抽取一个user_agent = random.choice(USER_AGENT_LIST)if user_agent:request.headers.setdefault('user-Agent', user_agent)print(f"user-Agent:{user_agent}")

本文作者使用Windows系统,使用组合键Win+R并输入cmd打开终端,并在终端中输入图示代码

结果如图:

(3)pipelines.py的配置

代码如下(示例):

# -*- coding: utf-8 -*-
# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html# useful for handling different item types with a single interface
from itemadapter import ItemAdapterimport pymongo
# useful for handling different item types with a single interface
from scrapy.utils.project import get_project_settingssettings = get_project_settings()class NewshaiwaiPipeline:# class中全部替换def __init__(self):host = settings["MONGODB_HOST"]port = settings["MONGODB_PORT"]dbname = settings["MONGODB_DATABASE"]sheetname = settings["MONGODB_TABLE"]username = settings["MONGODB_USER"]#monggodb没有密码的情况下就把这两行注释掉即可password = settings["MONGODB_PASSWORD"]# 创建MONGODB数据库链接client = pymongo.MongoClient(host=host, port=port, username=username, password=password)#client = pymongo.MongoClient(host=host, port=port)#没有密码的时候# 指定数据库mydb = client[dbname]# 存放数据的数据库表名self.post = mydb[sheetname]def process_item(self, item, spider):data = dict(item)# 数据写入self.post.insert_one(data)#insert()/insert_one()适用于高版本pythonreturn item

(4)settings.py的配置

首先在最上边添加:

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

然后将机器人协议选为不遵守(20行):

# Obey robots.txt rules
ROBOTSTXT_OBEY = False

然后将中间件组件从注释中释放(54行),并按照如图修改:

# Enable or disable downloader middlewares
# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
DOWNLOADER_MIDDLEWARES = {'NewsHaiwai.middlewares.RotateUserAgentMiddleware': 543,
}

然后将写入MONGODB组件从注释中释放(67行):

# Configure item pipelines
# See https://docs.scrapy.org/en/latest/topics/item-pipeline.html
ITEM_PIPELINES = {'NewsData.pipelines.NewsdataPipeline': 300,
}

最后在下边添加如图所示代码,添加UA和MONGODB数仓设置:

USER_AGENT_LIST = ["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1","Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6","Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1","Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5","Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3","Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3","Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
]# 添加MONGODB数仓设置
MONGODB_HOST = "localhost"  # 数仓IP
MONGODB_PORT = 27017  # 数仓端口号
MONGODB_DATABASE = "NewsHaiwai"  # 数仓数据库
MONGODB_TABLE = "News_Haiwai_A"  # 数仓数据表单

2.4 创建爬虫python文件

在终端中使用如下代码,其中” “所代表的含义是目标引用的作用域是全域:

scrapy genspider haiwainet " "

结果如图:
在这里插入图片描述

3.编辑爬虫代码

3.1 编辑爬虫代码

在VScode中打开我们创建的爬虫python文件
使用如下代码编辑:

# -*- coding: utf-8 -*-
import scrapy#导入scrapy库
from NewsHaiwai.items import NewshaiwaiItem#和最初创建的文件夹名字相同,即NewshaiwaiItem的item.py文件中
from bs4 import BeautifulSoup#导入BeautifulSoupclass HaiwainetSpider(scrapy.Spider):“这个类用于爬虫”name = 'haiwainet'#命名爬虫名称,在终端中执行allowed_domains = []#作用域start_urls = [['http://opinion.haiwainet.cn/456317/', '海外网', '评论-侠客岛1','20201935王新宇'],['http://opinion.haiwainet.cn/456317/2.html', '海外网', '评论-侠客岛2','20201935王新宇'],['http://opinion.haiwainet.cn/456317/3.html', '海外网', '评论-侠客岛3','20201935王新宇'],['http://opinion.haiwainet.cn/456317/4.html', '海外网', '评论-侠客岛4','20201935王新宇'],['http://opinion.haiwainet.cn/456317/5.html', '海外网', '评论-侠客岛5','20201935王新宇'],['http://opinion.haiwainet.cn/456317/6.html', '海外网', '评论-侠客岛6','20201935王新宇'],['http://opinion.haiwainet.cn/456317/7.html', '海外网', '评论-侠客岛7','20201935王新宇'],['http://opinion.haiwainet.cn/456317/8.html', '海外网', '评论-侠客岛8','20201935王新宇'],['http://opinion.haiwainet.cn/456317/9.html', '海外网', '评论-侠客岛9','20201935王新宇'],['http://opinion.haiwainet.cn/456317/10.html', '海外网', '评论-侠客岛10','20201935王新宇'],['http://opinion.haiwainet.cn/456465/', '海外网', '评论-港台腔','20201935王新宇'],['http://opinion.haiwainet.cn/345415/', '海外网', '评论-海外舆论','20201935王新宇'],['http://news.haiwainet.cn/yuanchuang/', '海外网', '咨讯-原创','20201935王新宇'],['http://www.haiwainet.cn/roll/', '海外网', '咨讯-滚动','20201935王新宇'],['http://opinion.haiwainet.cn/456318/', '海外网', '理论-学习小组','20201935王新宇'],['http://huamei.haiwainet.cn/bagua/ ', '海外网', '华媒-秀八卦','20201935王新宇'],['http://huamei.haiwainet.cn/news/', '海外网', '华媒-新闻','20201935王新宇'],['http://huamei.haiwainet.cn/hanwainet/CentralKitchenPlatform/World/ ', '海外网', '华媒-国际资讯','20201935王新宇'],['http://singapore.haiwainet.cn/', '海外网', '新加坡-滚动资讯','20201935王新宇'],['http://us.haiwainet.cn/News1/', '海外网', '美国-时事新闻','20201935王新宇'],#爬取网站列表+站点+栏目+学号姓名def start_requests(self):for url in self.start_urls:item = NewshaiwaiItem()#生成字典item["site"] = url[1]#设置站点item["item"] = url[2]#设置栏目item["student_id"] = url[3]#设置学号姓名# ['http://opinion.haiwainet.cn/456317/', '海外网', '评论-侠客岛','20201935王新宇']传进来的urlyield scrapy.Request(url=url[0],meta={"item": item},callback=self.parse)#利用生成器进行迭代返回def parse(self, response):item = response.meta["item"]#承接之前参数site_ = item["site"]#利用site_充当中间传递变量item_ = item["item"]#利用item_ 充当中间传递变量student_id_ = item["student_id"]#利用student_id_充当中间传递变量title_list = response.xpath('//*[@id="list"]/li/h4/a/text()').extract()#爬取titleurl_list = response.xpath('//*[@id="list"]/li/h4/a/@href').extract()#爬取二级网址date_list = response.xpath('//*[@id="list"]/li/div/span/text()').extract()#爬取日期#//*用于匹配所有符合要求的节点    //匹配子孙节点  /用于获取直接子节点for each in range(len(title_list)): item=NewshaiwaiItem()#定义字典,此时item是一个空字典item['title']=title_list[each]#通过for循环的下标访问每一个item的标题、url、dateitem['url']=url_list[each]#设置二级链接item['date']=date_list[each]#设置日期item["site"] = site_#设置站点item["item"] = item_#设置栏目item["student_id"] = student_id_#设置学号姓名#print(item)#检查是否出错yield scrapy.Request(url=item["url"], meta={"item": item}, callback=self.parse_detail)#meta表示携带response里边的参数,固定写法meta={"item": item}def parse_detail(self,response):item=response.meta["item"]strs=response.xpath('/html/body/div[3]/div/div[2]/div/p/text()').extract()#此时得到的是一个列表,有多个p标签#如果想要文章原结构就不使用text()#此步不能使用//*#最后还可以通过extract()[0]的方式解决列表赋值给字符串的问题#其中item["content"]是一个字符串,但是后边匹配的结果是一个列表,所以通过取出列表第一个元素的方法或者使用从列表取出字符串的方式#本文选择使用匿名函数从列表取出字符串的方式解决#item["content"]=BeautifulSoup(strs,'lxml').textitem["content"] = " ".join('%s' %id for id in strs)return item#把数据写入mongodb

3.2 执行爬虫代码

在终端中执行如下代码:

scrapy crawl haiwainet

在Navicat查看,结果如图:
在这里插入图片描述

五、Gerapy分布式框架

1.Gerapy概述

Gerapy就是将我们爬虫工程师通过Scrapy爬虫框架写好的项目整合到Django的Web环境进行统一管理的后台。简单理为一个Admin后台进行控制我们写好的爬虫脚本,进行有针对性的网络数据采集(比如固定时间、固定间隔、或者一次性采集)方便管理,并且对项目进行简单的项目管理,对于了解Django的Web开发的小伙伴来说后期如果需要报表功能可以基于这个框架自己增加Admin中的模块功能,比较容易。该框架对于初学者非常友好,并且使用简单、高效。

2.Gerapy用途

Gerapy 是一款 分布式爬虫管理框架,支持 Python 3,基于 Scrapy、Scrapyd、Scrapyd-Client、Scrapy-Redis、Scrapyd-API、Scrapy-Splash、Jinjia2、Django、Vue.js 开发,Gerapy 可以帮助我们:
1.更方便地控制爬虫运行
2.更直观地查看爬虫状态
3.更实时地查看爬取结果
4.更简单地实现项目部署
5.更统一地实现主机管理

3.搭建Gerapy

首先打开命令行,输入如下代码下载所需包:

pip install gerapy==0.9.11
pip install scrapyd

然后在目标文件夹下打开终端,在终端中执行如下代码:

gerapy init
gerapy migrate

结果如图:
在这里插入图片描述
然后在终端中执行如下代码:

gerapy initadmin

结果如图,其中结果表明用户创建成功,用户名是admin,密码是admin:
在这里插入图片描述
然后在终端中执行如下代码(关闭防火墙):

gerapy runserver 0.0.0.0:8000

然后就可以在网站上登录到网页进行分布式爬虫了:
在这里插入图片描述
然后再全局搜索中打开scrapyd文件所在位置,再终端中运行scrapyd.exe,保留命令窗口:
在这里插入图片描述
然后在浏览器中登录到127.0.0.1:8000
在这里插入图片描述

4.编辑项目

(1)主机管理
结果如图:
在这里插入图片描述
成功如图:
在这里插入图片描述

(2)项目管理
将含有cfg文件后缀的爬虫项目的上级文件目录复制到gerapy文件下的projects文件中,在浏览器中刷新,即结果如图:
在这里插入图片描述
添加对应描述(英文),打包,点击部署:
在这里插入图片描述

(3)任务管理
根据自己的需要设置时间,或者时间间隔,小编这里设置的时间间隔为1天为例,开始实践为1分钟后(为了快速看运行情况)。
ps:目前版本还没有北京时间,推荐使用Hong_Kong时间
在这里插入图片描述
查看任务状态:
在这里插入图片描述
在这里插入图片描述

总结

以上就是今天要分享的内容,本文仅仅简单介绍了Scrapy和Gerapy的简单使用,还有许多功能有待开发,
学习来源:https://blog.csdn.net/ck784101777/article/details/104468780
https://blog.csdn.net/bookssea/article/details/107309591
https://blog.csdn.net/weixin_44088790/article/details/115017625
https://blog.csdn.net/zhao1299002788/article/details/108808112
https://feishujun.blog.csdn.net/article/details/117200531
https://blog.csdn.net/weixin_65350557/article/details/128319447

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

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

相关文章

星际无限CTO张超受邀参加2020区块链技术和应用峰会

7月31日上午&#xff0c;区块链技术和峰会暨第四届中国区块链开发大赛成果发布会在杭州国际博览中心正式召开。 大会由中国电子技术标准化研究院和杭州市萧山区人民政府主办&#xff0c;中国区块链技术和产业发展论坛、杭州日报报业集团&#xff08;华媒控股&#xff09;、钱江…

2021年中国报刊出版行业经营现状及A股上市企业对比分析[图]

一、经营现状 报纸是以刊载新闻和时事评论为主的定期向公众发行的印刷出版物或电子类出版物,是大众传播的重要载体,具有反映和引导社会舆论的功能,近年来中国报纸出版行业营业收入快速增长,2019年中国报纸出版行业营业收入达576.10亿元,较2018年增加了0.2 亿元,同比增长…

华媒:增强网络安全 亡羊补牢、为时未晚

马来西亚《星洲日报》17日刊文称&#xff0c;若要防堵漏洞被骇客利用&#xff0c;或者避免系统漏洞可能导致网络灾难&#xff0c;就必须靠科技界、软件使用者&#xff0c;包括政府和其他用户&#xff0c;共同合作加以防范。 资料图为2017年5月13日&#xff0c;一台位于北京的笔…

无车发展阶段及实践

摘要 在城市经历了过度依赖小汽车带来的交通拥堵、空气污染等负面效应后&#xff0c;全球许多国家和地区正在积极探索适合本地区的无车发展路径和措施。伦敦大学学院劳伊德赖特提出的无车发展图谱&#xff0c;从有限的示范实验到长期的绝对禁用&#xff0c;体现了城市对小汽车使…

华媒舍:新闻媒体软文发布需要考虑消费群体

如何在新闻媒体软文发布过程中拥有更为理想的引流方法&#xff0c;效果想要实现这一点还是合理的&#xff0c;但应注意一定要充分考虑消费群体难题&#xff0c;假如没有考虑到终端产品用户人群难题&#xff0c;新闻媒体软文发布并没有目的性&#xff0c;这样的状态下可以实现的…

华媒舍:海内外媒体宣发,软文发稿怎样才能有好得效果?

在公司的日常宣传策划层面&#xff0c;软文发表文章越来越多得到了公司的热捧&#xff0c;不论是针对公司品牌的建立&#xff0c;或是对于产品的宣传策划能起到非常重要的作用。 近年来随着的不断发展&#xff0c;每个人离不了互联网&#xff0c;如今每个人都离不开手机&#x…

标注工具: Label Studio

简介 Label Studio是一个开源数据标记工具。它允许您使用简单方便且直接的UI标记数据类型&#xff0c;如音频&#xff0c;文本&#xff0c;图像&#xff0c;视频和时间序列&#xff0c;并导出到各种型号格式。它可用于准备原始数据或改进现有培训数据以获得更准确的ML模型。 …

浅谈自然语言处理(NLP)学习路线(二):N-Gram模型,一文带你理解N-Gram语言模型

本文相关文章&#xff1a;浅谈自然语言处理(NLP)学习路线&#xff08;一&#xff09;--- 概述_nlp学习路线_尚拙谨言的博客-CSDN博客 大家好&#xff0c;我是尚拙谨言。欢迎来到大道至简专栏之自然语言处理学习路线。在本系列往期文章中&#xff0c;我介绍过学习自然语言处理技…

文心一言 VS chatgpt (10)-- 算法导论 3.1 2~3题

二、证明:对任意实常量a和b&#xff0c;其中b>0&#xff0c;有(na) ^ bO(n ^ b)。 文心一言&#xff1a; 设ab&#xff0c;则有(na) ^ b(nb)(na)n ^ bn ^ b O(n ^ b) 因此&#xff0c;对任意实常量a和b&#xff0c;其中b>0&#xff0c;有(na) ^ bO(n ^ b)。 chatgpt&am…

PACS医学影像系统(完整版)

一、PACS影像存取与传输系统以实现医学影像数字化存储、诊断为核心任务&#xff0c;从医学影像设备&#xff08;如CT、CR、DR、MR、DSA、RF等&#xff09;获取影像&#xff0c;集中存储、综合管理医学影像及病人相关信息&#xff0c;建立数字化工作流程。 二、系统可实现检查预…

医院医学影像系统PACS,使用手册和操作说明书。

首先&#xff0c;系统可实现检查预约、病人信息登记、计算机阅片、电子报告书写、胶片打印、数据备份等一系列满足影像科室日常工作的功能,并且由于影像数字化存储,用户可利用影像处理与测量技术辅助诊断、方便快捷地查找资料或利用网络将资料传输至临床科室&#xff0c;还可与…

医学图像——医学坐标体系

转自 作者&#xff1a;豚大叔的小屋 链接&#xff1a;https://www.jianshu.com/p/b8fe11a33319 仅作为个人学习记录 1.医学坐标体系介绍 医学图像处理的一个难题是坐标体系的不一致。当前&#xff0c;在图像处理的程序中通常运用三种坐标体系&#xff1a;世界坐标体系&#x…

Albumentations:医学图像数据增强方式

albumentations: 一个快速的图像增强库 albumentations 下载albumentations 特点albumentations 使用图像增强的目标图像增强albumentations 官网 albumentations 下载 conda activate conda环境 # 不使用conda可以忽略 pip install albumentations# 上面未成功 pip install …

医学影像篇

影像组学研究的基本流程知识点 01 准备工作 研究前我们先要做好准备工作&#xff1a;&#xff08;这个准备工作呢就好像小白做菜&#xff09; 最开始&#xff0c;我们往往主动提出或者被提出了一个临床问题&#xff08;临床问题可能是老板直接安排的&#xff0c;也可能是在临…

DICOM医学图像处理:DICOM网络传输

背景&#xff1a; 专栏取名为DICOM医学图像处理原因是&#xff1a;博主是从医学图像处理算法研究时开始接触DICOM协议的。当初认识有局限性&#xff0c;认为DICOM只是一个简单的文件格式约定&#xff0c;简而言之&#xff0c;我当时认为DICOM协议就是扩展名为DCM文件的格式说明…

医学图像处理综述

本文作者 张伟&#xff0c;公众号&#xff1a;计算机视觉life&#xff0c;编辑成员 0、引言 医学图像处理的对象是各种不同成像机理的医学影像&#xff0c;临床广泛使用的医学成像种类主要有X-射线成像 &#xff08;X-CT&#xff09;、核磁共振成像&#xff08;MRI&#xff0…

医学影像分割入门MRI关于T1、T2、Flair等概念

医学影像分割入门MRI关于T1、T2、Flair等概念 相关概念&#xff1a;医学影像分割,是深度学习与医学的结合,通过对医学影像的分析处理,实现对病灶部位的自动分割. MRI MRI是磁共振成像(Megnetic Resonace Imaging)&#xff0c;原理是依据释放的能量&#xff08;也可称信号&am…

医学图像DICOM医学影像文件格式详解

1、 什么是DICOM&#xff1f; DICOM(DigitalImaging andCommunications inMedicine)是指医疗数字影像传输协定&#xff0c;是用于医学影像处理、储存、打印、传输的一组通用的标准协定。它包含了文件格式的定义以及网络通信协议。DICOM是以TCP/IP为基础的应用协定&#xff0c;并…

80个Python练手小项目;AI开发者的总结与反思;B站免费Stable Diffusion视频教程;五问ChatGPT+医学影像 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; 『美团大模型已秘密研发数月』在仅剩一年的窗口期里努力奔跑 5月18日下午&#xff0c;美团内部召开大模型技术分享会&#xff0c;美团…

医学图像分割之TransUNet

目录 一、背景 二、提出问题 三、解决问题 四、网络结构详解 CNN部分&#xff08;ResNet50的前三层&#xff09; transformer部分 U-Net的decoder部分 五、模型性能 开头处先说明下TransUNet的地位&#xff1a;它是第一个将transformer用于U型结构的网络。 一、背景 医…