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

article/2025/11/8 4:58:04

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://chatgpt.dhexx.cn/article/SiYccITA.shtml

相关文章

网络爬虫入门

目录 一、爬取南阳理工学院ACM题目1、新建.py文件2、爬取结果3、代码分析&#xff08;1&#xff09;调用&#xff08;2&#xff09;定义表头&#xff08;3&#xff09;爬取信息并显示进度条&#xff08;4&#xff09;把爬取内容存放文件NYOJ_Subjects.csv中 二、爬取重庆交通大…

C语言宏定义

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

python——爬虫与脚本

python——爬虫与脚本 1. Python简介 1.1. Python起源 1.1.1语言作者 ​ 贵铎范罗萨姆&#xff08;Guido van Rossum&#xff09;荷兰人于1989年圣诞节创建了python。 底层语言为C语言 1991年初&#xff0c;python发布了第一个公开发行版。 用于自动化 金融行业、数据分析…

python网络爬虫:爬虫环境与爬虫简介

python网络爬虫 python爬虫环境与爬虫简介 认识爬虫 浏览网页基本流程 网络爬虫模拟了浏览器去发送请求并且返回响应结果的一个过程。 爬虫概念 网络爬虫也被称为网络蜘蛛、网络机器人,是一个自动下载网页的计算机程序或自动化脚本。 网络爬虫就像一只蜘蛛一样在互联网上沿着…

python爬虫基础知识

今天学习了爬虫原理&#xff0c;网络通信基于URL统一资源定位器&#xff0c;这就是最简单最原始的爬虫。 欢迎加微信18599911861有更多python爬虫教程视频资源分享。 网络爬虫&#xff08;又被称为网页蜘蛛&#xff0c;网络机器人&#xff0c;在FOAF社区中间&#xff0c;更经常…

php编程语言和c语言区别,3月编程语言排行榜出炉,C语言暴走,PHP表现优秀!

近日&#xff0c;3月编程语言排行榜出炉了。 Python排名第四&#xff0c;GO语言仅排名第17位。 在此榜单中&#xff0c;作为编程语言常青树的C语言表现最为优秀&#xff0c;简直是暴走的节奏。 对于此次3月编程语言排行榜&#xff0c;程序员网友们纷纷发表了各自的一些看法&…

用C语言爬网页代码

今天下午把爬代码看了一下&#xff0c;也敲了&#xff0c;只不过我爬下来的总是乱码&#xff0c;现在大多数爬虫都是Python和Java&#xff0c;很少有人用C语言爬了&#xff1b; #include <stdio.h> #include <winsock2.h> #include<string.h> #pragma commen…

C语言的主要用途以及未来发展

截止到 2022 年&#xff0c;C语言已经发布了50 年&#xff0c;是不折不扣的“大叔”或者“大爷”&#xff0c;但是&#xff0c;C语言在编程界依然非常流行&#xff1b;2019 年&#xff0c;C语言由于速度快、平台独立的特性&#xff0c;在世界编程语言排行榜中夺得第二名。 C语言…

python爬虫笔记

requests 请求库 import requests import recontent requests.get(https://book.douban.com/).text pattern re.compile(<li.*?cover.*?href"(.*?)".*?title"(.*?)".*?more-meta.*?author">(.*?)</span>.*?year">(…

爬虫学习笔记

目录 一、 初识爬虫 1. 简单的爬虫 2. web请求 3. http协议 4. requests入门 二、数据解析与提取 1. 概述 2. Regular Expression 正则表达式 3. re模块 4. 豆瓣电影练习 5. 电影天堂练习 6. bs4 北京新发地、热搜榜 7. 抓取图库图片 8. Xpath语法 9. xpath猪八…

Python爬虫自学

Python爬虫自学 前言 这是我自己学习Python爬虫的学习笔记&#xff0c;内容大部分来自上海交通大学出版的《Python语言程序设计实践教程》&#xff0c;欢迎大家一起交流 参考博客&#xff1a; Python爬虫教程&#xff08;纯自学经历&#xff0c;保姆级教程&#xff09; Be…

爬虫基础day01

爬虫基础day01 一、介绍 什么是网络爬虫&#xff1f;&#xff08;面试题&#xff09; 网络爬虫&#xff08;Web Spider 又称为网页蜘蛛、网络机器人&#xff09;就是模拟浏览器发送网络请求&#xff0c;就收请求响应&#xff0c;一种按照一定的规则&#xff0c;自动的抓取互联…

网络爬虫详解

网络爬虫&#xff08;web crawler&#xff0c;又称为网页蜘蛛&#xff08;只针对网页&#xff0c;B/S系统&#xff09;&#xff0c;网络机器人&#xff0c;在FOAF社区中间&#xff0c;更经常的称为网页追逐者&#xff09;&#xff0c;是一种按照一定的规则&#xff0c;自动地抓…

Linux C语言实现简单爬虫

文章目录 代码案例源代码 应用知识hostent结构体gethostbyname()函数inet_pton和inet_ntopinet_ptoninet_ntop sockaddr_inin_addr结构htons 编辑socket()connect()sprintf函数format标签属性 setsockopt 代码案例 爬到的HTML文件 输入终端的参数 源代码 /***************…

fcntl函数 和 ioctl函数

文章目录 一、fcntl 函数二、ioctl 函数 一、fcntl 函数 fcntl()函数可以对一个已经打开的文件描述符执行一系列控制操作&#xff0c;譬如复制一个文件描述符&#xff08;与dup、dup2 作用相同&#xff09;、获取/设置文件描述符标志、获取/设置文件状态标志等&#xff0c;类似…

linux ioctl 理解

背景 传统的操作系统可以分成两层&#xff0c;用户层和内核层。内核代码处理敏感资源同时在不同应用程序中间提供了安全且可信的隔离&#xff0c;出于此&#xff0c;操作系统要阻止用户态的程序直接访问内核资源。用户空间的程序通常发出一个给内核的请求&#xff0c;该请求称为…

linux ioctl函数介绍

1. 概念 ioctl 是设备驱动程序中设备控制接口函数&#xff0c;一个字符设备驱动通常会实现设备打开、关闭、读、写等功能&#xff0c;在一些需要细分的情境下&#xff0c;如果需要扩展新的功能&#xff0c;通常以增设 ioctl() 命令的方式实现。 在文件 I/O 中&#xff0c;ioctl…

ioctl函数详解(参数详解,驱动unlocked_ioctl使用、命令码如何封装)

ioctl函数详解 一、ioctl函数的原型 在用户空间的函数原型 #include <sys/ioctl.h> int ioctl(int d, int request, ...); //io的控制&#xff0c;设备的控制/***第一个参数d是打开的文件描述符***//***The second argument is a device-dependent request code&…

IOCTL函数用法

.ioctl 的实现 一、ioctl的简介&#xff1a; 虽然在文件操作结构体"struct file_operations"中有很多对应的设备操作函数&#xff0c;但是有些命令是实在找不到对应的操作函数。如CD-ROM的驱动&#xff0c;想要一个弹出光驱的操作&#xff0c;这种操作并不是所有的…

IOCTL函数用法详解

ioctl是设备驱动程序中对设备的I/O通道进行管理的函数 。所谓对I/O通道进行管理&#xff0c;就是对设备的一些特性进行控制&#xff0c;例如串口的传输波特率、马达的转速等等。它的调用个数如下&#xff1a; int ioctl(int fd, ind cmd, …)&#xff1b; 其中fd是用户程序打…