小白也能学会的爬虫教学(超详细,每一步都配图,不怕你学不会,图文并茂,看完直呼‘爽’)

2023-11-18

安装pycharm

本文着重介绍如何实现爬虫,pycharm的安装各位可以自行找相关资料下载安装,本文不再提供

一:新建一个工程

打开pycharm,按照如图所示新建一个工程
在这里插入图片描述

按照自己的习惯自行设置文件工程所在的目录以及名字,本例中将该工程放在pycharm的安装目录下,工程名为spider_test在这里插入图片描述
点击右下角Create按钮即创建成功,如图所示,红框中是该工程下主要的子目录和文件,是成功创建工程后自动生成的
在这里插入图片描述

二:安装scrapy

这里简单介绍一下Scrapy,因为是面向小白,此处不过多介绍,感兴趣的小可爱们可以自行搜索了解哦

• scrapy 是一个功能非常强大的爬虫框架,它不仅能便捷地构建request请求,还有强大的 selector 能够方便地解析 response响应。
• 可以使用这个工具将爬虫程序工程化、模块化。
• scrapy是一个基于Twisted的异步处理框架,是纯python实现的爬虫框架,其架构清晰,模块之间的耦合程度低,可扩展性也很强。

那么如何安装并且使用scrapy呢,稍安勿躁,请各位接着往下面看
首先我们需要在该工程下安装Scrapy
点击File->Setting,如图
在这里插入图片描述
找到Project: spider_test>Project Interpreter,点击Python Interpreter,在此处查看、下载、删除python库和包在这里插入图片描述
来到如图所示画面,点击左上角的加号+
在这里插入图片描述
出现如图所示窗口,在如图所示的搜索框中输入Scrapy,找到Scrapy库,点击左下角install安装按钮,进行安装,安装过程需要几分钟,请耐心等待提示安装成功。
在这里插入图片描述
安装其他需要的库:
按照上述安装Scrapy的方法,继续安装wheel、pywin32两个库,安装好后已安装库栏中显示如图:(查看已安装库中是否已经有如下几个库),都有了表示安装成功,可以进行下一步啦
在这里插入图片描述
在这里插入图片描述

三:创建Scrapy工程

在文件管理器中,找到Scrapy的安装目录,如图所示,一般就在之前创建的工程下(spider_test->venv->Scripts)
在这里插入图片描述
在该目录下进入cmd命令行窗口(直接在目录窗口键盘输入cmd加回车即可进入)
在这里插入图片描述

在命令行中输入如下指令加回车创建一个Scrapy工程,工程名为test1
在这里插入图片描述
出现如图所以回应表示创建成功在这里插入图片描述
回到pycharm,在如下目录中有如下几个文件表示成功。可以进行下一步
在这里插入图片描述

四:如何使用scrapy

1、新建一个begin.py文件

在test1工程之下,新建一个名为begin.py文件,和scrapy.cfg在同一级目录下,操作如图所示
在这里插入图片描述
创建好后的情况如图所示
在这里插入图片描述

2、编辑begin.py中的内容

在刚刚创建好的begin.py文件中输入如下内容(可直接复制下面代码粘贴)

from scrapy import cmdline
cmdline.execute("scrapy crawl bupt".split()) 
#bupt为爬虫的名字,在spider.py中定义

如图所示
在这里插入图片描述

3、修改items.py中的内容

复制下面的代码将原内容全部覆盖

import scrapy
class MyItem(scrapy.Item):
# define the fields for your item here like:
	school = scrapy.Field()
	link = scrapy.Field()

粘贴时出现如图所示提示,直接点击OK就行
在这里插入图片描述

4、新建一个spider.py文件

在spiders目录下新建一个spider.py文件
在这里插入图片描述
在该文件中粘贴以下内容:(此处代码为核心部分,尽量读懂)
本爬虫爬取的是北京邮电大学官网中的一处,如图所示:
在这里插入图片描述

import scrapy
from test1.items import MyItem #从items.py中引入MyItem对象
class mySpider(scrapy.spiders.Spider):
    name = "bupt" #爬虫的名字是bupt
    allowed_domains =["bupt.edu.cn/"] #允许爬取的网站域名
    start_urls = ["https://www.bupt.edu.cn/yxjg1.htm"]
    #初始网站地址,即爬虫爬取的第一个网站

    def parse(self, response):  # 解析爬取的内容
        item = MyItem()  # 生成一个在items.py中定义好的Myitem对象,用于接收爬取的数据

        for each in response.xpath("/html/body/div/div[2]/div[2]/div/ul/li[4]/div/ul/*"):#用xpath来解析html,div标签中的数据,就是我们需要的数据。
            item['school'] = each.xpath("a/text()").extract() #学院名称在text中
            item['link']= each.xpath("a/@href").extract() #学院链接在href中
            if (item['school'] and item['link']):  # 去掉值为空的数据
                yield(item)  # 返回item数据给到pipelines模块

修改好的如图所示:
在这里插入图片描述

5、修改pipelines.py

打开如下图所示的pipelines.py文件
在这里插入图片描述
将下面的代码复制粘贴进去覆盖原内容:

import json

class MyPipeline(object):
    def open_spider(self,spider):
        try:
            self.file = open('MyData.json',"w",encoding="utf-8")
        except Exception as err:
            print(err)
    def process_item(self,item,spider):
        dict_item = dict(item) #生成字典对象
        json_str = json.dumps(dict_item,ensure_ascii=False) + "\n"#生成json串
        self.file.write(json_str)
        return item
    def close_spider(self,spider):
        self.file.close() #关闭文件

继续点击ok
在这里插入图片描述

6、修改setting.py文件

再文件代码中找到如图所示代码(大概再65行~67行),将其取消注释,并将test1Pipeline改成MyPipeline
在这里插入图片描述

点击ok
在这里插入图片描述
修改后如图所示:
在这里插入图片描述

五、运行spider.py

前面所有准备工作都已经准备好了,万事俱备只欠运行,此时是不是迫不及待地想运行,看效果了呢
但是还差一步哦,心急出不了热豆腐,为什么这么说呢,别着急,接着往下操作
在这里插入图片描述
运行之后,此时文件出现报错
在这里插入图片描述
解决办法:接着按照图操作:
在这里插入图片描述
将如下框中内容修改成
D:\Pycharm\PyCharm 2020.3.4\spider_test\venv\Scripts\test1\begin.py
其实就是将其中的\test1\spiders删除,再将spider.py改成begin.py
在这里插入图片描述
在这里插入图片描述
点击ok,修改成功,成功后右上角变成这样,然后点击运行标志运行
在这里插入图片描述
出现下图所示红色字体表示运行成功
在这里插入图片描述

成功啦!!!

然后可以看到此处已经生成了一个MyData.json文件,使用pycharm或者记事本打开此文件,即可看到你的成果啦
在这里插入图片描述
效果如下:
在这里插入图片描述

感谢!!

恭喜你,到此,一个初学者爬虫你已经运行成功啦,本文面向纯爬虫小白,因此只介绍了操作过程,所有代码都是现成的,想进一步学习爬虫的相关知识,只会这一些肯定是远远不够的,希望大家可以根据上面的操作,把自己不懂的地方逐一去了解,相信你能进步的更多。喜欢我的文章话可以点赞加关注支持一下博主哇,博主一定感谢万分,对于上述有什么不懂的地方,也欢迎评论区留言,我一定积极尽自己所能热心回答

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

小白也能学会的爬虫教学(超详细,每一步都配图,不怕你学不会,图文并茂,看完直呼‘爽’) 的相关文章

  • 是否有解决方法可以通过 CoinGecko API 安全检查?

    我在工作中运行我的代码 一切都很顺利 但在不同的网络 家庭 WiFi 上 我不断收到403访问时出错CoinGecko V3 API https www coingecko com api documentations v3 可以观察到 在
  • 如何用python脚本控制TP LINK路由器

    我想知道是否有一个工具可以让我连接到路由器并关闭它 然后从 python 脚本重新启动它 我知道如果我写 import os os system ssh l root 192 168 2 1 我可以通过 python 连接到我的路由器 但是
  • Python 中的哈希映射

    我想用Python实现HashMap 我想请求用户输入 根据他的输入 我从 HashMap 中检索一些信息 如果用户输入HashMap的某个键 我想检索相应的值 如何在 Python 中实现此功能 HashMap
  • 将html数据解析成python列表进行操作

    我正在尝试读取 html 网站并提取其数据 例如 我想查看公司过去 5 年的 EPS 每股收益 基本上 我可以读入它 并且可以使用 BeautifulSoup 或 html2text 创建一个巨大的文本块 然后我想搜索该文件 我一直在使用
  • Python 中的舍入浮点问题

    我遇到了 np round np around 的问题 它没有正确舍入 我无法包含代码 因为当我手动设置值 而不是使用我的数据 时 返回有效 但这是输出 In 177 a Out 177 0 0099999998 In 178 np rou
  • 跟踪 pypi 依赖项 - 谁在使用我的包

    无论如何 是否可以通过 pip 或 PyPi 来识别哪些项目 在 Pypi 上发布 可能正在使用我的包 也在 PyPi 上发布 我想确定每个包的用户群以及可能尝试积极与他们互动 预先感谢您的任何答案 即使我想做的事情是不可能的 这实际上是不
  • 将 python2.7 与 Emacs 24.3 和 python-mode.el 一起使用

    我是 Emacs 新手 我正在尝试设置我的 python 环境 到目前为止 我已经了解到在 python 缓冲区中使用 python mode el C c C c将当前缓冲区的内容加载到交互式 python shell 中 显然使用了什么
  • 独立滚动矩阵的行

    我有一个矩阵 准确地说 是 2d numpy ndarray A np array 4 0 0 1 2 3 0 0 5 我想滚动每一行A根据另一个数组中的滚动值独立地 r np array 2 0 1 也就是说 我想这样做 print np
  • 如何在 Python 中解析和比较 ISO 8601 持续时间? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 Python v2 库 它允许我解析和比较 ISO 8601 持续时间may处于不同单
  • Python,将函数的输出重定向到文件中

    我正在尝试将函数的输出存储到Python中的文件中 我想做的是这样的 def test print This is a Test file open Log a file write test file close 但是当我这样做时 我收到
  • 在Python中检索PostgreSQL数据库的新记录

    在数据库表中 第二列和第三列有数字 将会不断添加新行 每次 每当数据库表中添加新行时 python 都需要不断检查它们 当 sql 表中收到的新行数低于 105 时 python 应打印一条通知消息 警告 数量已降至 105 以下 另一方面
  • Docker 中的 Python 日志记录

    我正在 Ubuntu Web 服务器上的 Docker 容器中测试运行 python 脚本 我正在尝试查找由 Python Logger 模块生成的日志文件 下面是我的Python脚本 import time import logging
  • Numpy - 根据表示一维的坐标向量的条件替换数组中的值

    我有一个data多维数组 最后一个是距离 另一方面 我有距离向量r 例如 Data np ones 20 30 100 r np linspace 10 50 100 最后 我还有一个临界距离值列表 称为r0 使得 r0 shape Dat
  • Python3 在 DirectX 游戏中移动鼠标

    我正在尝试构建一个在 DirectX 游戏中执行一些操作的脚本 除了移动鼠标之外 我一切都正常 是否有任何可用的模块可以移动鼠标 适用于 Windows python 3 Thanks I used pynput https pypi or
  • Pandas 将多行列数据帧转换为单行多列数据帧

    我的数据框如下 code df Car measurements Before After amb temp 30 268212 26 627491 engine temp 41 812730 39 254255 engine eff 15
  • python import inside函数隐藏现有变量

    我在我正在处理的多子模块项目中遇到了一个奇怪的 UnboundLocalError 分配之前引用的局部变量 问题 并将其精简为这个片段 使用标准库中的日志记录模块 import logging def foo logging info fo
  • 将 Python 中的日期与日期时间进行比较

    所以我有一个日期列表 datetime date 2013 7 9 datetime date 2013 7 12 datetime date 2013 7 15 datetime date 2013 7 18 datetime date
  • 模拟pytest中的异常终止

    我的多线程应用程序遇到了一个错误 主线程的任何异常终止 例如 未捕获的异常或某些信号 都会导致其他线程之一死锁 并阻止进程干净退出 我解决了这个问题 但我想添加一个测试来防止回归 但是 我不知道如何在 pytest 中模拟异常终止 如果我只
  • 更改 Tk 标签小部件中单个单词的颜色

    我想更改 Tkinter 标签小部件中单个单词的字体颜色 我知道可以使用文本小部件来实现与我想要完成的类似的事情 例如使单词 YELLOW 显示为黄色 self text tag config tag yel fg clr yellow s
  • 使用随机放置的 NaN 创建示例 numpy 数组

    出于测试目的 我想创建一个M by Nnumpy 数组与c随机放置的 NaN import numpy as np M 10 N 5 c 15 A np random randn M N A mask np nan 我在创建时遇到问题mas

随机推荐

  • dojo SplitContainer

    SplitContainer author amushen email amushen yahoo com cn qq 38371354 相关的文件 dojo widget LayoutContainer dojo widget HtmlW
  • Pytorch2.0中compiled_model=torch.compile(model) 的正确添加位置

    今天pytorch官网更新了pytorch2 0稳定版 迫不及待的我直接更新了 确实像官方所说 只需加入model torch compile model 一行代码即可加速 加入的位置如下 cpu训练 model UNet deep sup
  • 混杂设备与字符设备的区别----misc_register、 register_chrdev 的区别总结

    杂项设备 misc device 杂项设备也是在嵌入式系统中用得比较多的一种设备驱动 在 Linux 内核的include linux目录下有Miscdevice h文件 要把自己定义的misc device从设备定义在这里 其实是因为这些
  • openstack开发实践(一):devstack搭建all-in-one的openstack开发环境

    Devstack简介 devstack是面向开发者的一个openstack部署工具 用户可以指定不同的版本分支进行安装 devstack借助于Shell脚本实现openstack自动化部署 devstack源码中的stack sh即为安装脚
  • Python基于控制台的学生管理系统

    encoding utf 8 定义一个函数 显示可以使用的功能列表给用户 def showInfo print 30 print 学生管理系统 v1 0 print 1 添加学生的信息 print 2 删除学生的信息 print 3 修改学
  • MIPI信号的分析--结合示波器实际测试波形

    如果排查的思路对你有帮助 请记住 消雨匆匆 码字和排查很累 仅此而已 硬件不是抄电路 拿烙铁 懂点软件 细致分析 找问题和破案搜集线索是一样的 PS 硬件知识也可以性感 部分内容来自于此博客的大神总结 http www elecfans c
  • Java+GeoTools实现WKT数据根据EPSG编码进行坐标系转换

    场景 Java GeoTools 开源的Java GIS工具包 快速入门 实现读取shp文件并显示 Java GeoTools 开源的Java GIS工具包 快速入门 实现读取shp文件并显示 霸道流氓气质的博客 CSDN博客 在上面实现J
  • 数字人+ChatGPT强强联手能擦出什么火花?

    随着元宇宙概念的快速发展 以数字人 ChatGPT为形式的创作方式正在颠覆传统视频创作方式 并在市场上呈现快速增长的态势 根据新榜的报道 目前已经有多位大V使用虚拟数字人来协助完成短视频制作 并且值得一提的是 这些视频并没有因为采用数字人而
  • 定时器编码器AB相电机测速( 补充)

    TIM编码器AB相电机测速 定时器编码器AB相电机测速 1 四倍频 2 算法应用 3 stm32硬件连接 3 stm32环境配置端口配置 3 C语言实现编码器个数读取 3 C语言实现编码器个数转换为速度 定时器编码器AB相电机测速 1 四倍
  • vue3配置eslint 出现问题

    vue3配置eslint 出现问题 标题必须使用导入来加载 ES 模块 ESlint Error Must use import to load ES Module 加上这一行即可
  • Jmeter之ForEach控制器

    场景运用 ForEach控制器一般和用户自定义变量或者正则表达式提取器一起使用 其在用户自定义变量或者从正则表达式提取器的返回结果中读取一系列相关的变量 该控制器下的采样器或者控制器都会被执行一次或多次 每次读取不同的变量值 需求2 有一组
  • 学习java随堂练习-20220609

    学习Java的第八天 第1题 第2题 第3题 第4题 第5题 今天是学习Java的第八天 5道练习题 第1题 题目 1 循环输入近6年某高校的录取分数 求出平均分和最低分 运行结果 代码如下 循环输入近6年某高校的录取分数 求出平均分和最低
  • PHP操作Excel

    头 header Content Type application vnd ms excel header Content Disposition attachment filename sample xls header Pragma n
  • 时序预测

    时序预测 MATLAB实现DNN全连接神经网络时间序列预测 目录 时序预测 MATLAB实现DNN全连接神经网络时间序列预测 基本介绍 模型研究 程序设计 学习总结 参考资料 基本介绍 DNN的结构不固定 一般神经网络包括输入层 隐藏层和输
  • 传指针和传引用的区别以及指针和引用的区别

    一 引用 引用的定义 引用是给另外一个变量其别名 所以引用不会分配内存空间 引用是引入了对象的一个同义词 例如 Point pt1 10 10 Point pt2 pt1 上述的代码 定义了pt2为pt1的引用 通过这样的定义 pt2和pt
  • 让生产活动更高效,物料管理场景的RPA应用

    作为制造业 供应链领域常见环节 物料管理 Material Management 通常是对企业生产经营活动所需各种物料的采购 验收 供应 保管 发放 使用等一系列计划与控制活动的总称 物料管理科学与否 将会影响到组织各职能部门间的协调 生产
  • 文件的上传与下载

    一 文件上传 文件上传程序步骤 1 如何在web页面中添加上传输入项
  • python数据驱动测试设计_Python+unittest+DDT实现的数据驱动测试

    前言 数据驱动测试 避免编写重复代码 数据与测试脚本分离 通过使用数据驱动测试 来验证多组数据测试场景 通常来说 多用于单元测试和接口测试 ddt介绍 Data Driven Tests DDT 即数据驱动测试 可以实现不同数据运行同一个测
  • Gcov 详解 + 内核函数覆盖率测试方法详述及产生错误解决办法

    1 gcov是什么 Gcov is GCC Coverage 是一个测试代码覆盖率的工具 是一个命令行方式的控制台程序 伴随GCC发布 配合GCC共同实现对C C 文件的语句覆盖和分支覆盖测试 与程序概要分析工具 profiling too
  • 小白也能学会的爬虫教学(超详细,每一步都配图,不怕你学不会,图文并茂,看完直呼‘爽’)

    详细且简单的爬虫简单教学 小白看了之后直呼 爬虫就这 安装pycharm 一 新建一个工程 二 安装scrapy 三 创建Scrapy工程 四 如何使用scrapy 1 新建一个begin py文件 2 编辑begin py中的内容 3 修