北欧--2022年Python爬虫心得

2023-11-07

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

前言

`网络爬虫也称为“蜘蛛”,它可以在海量的互联网信息爬取需要的信息。简单地说它是模拟人类请求网站的行为,即自动请求网页、抓取数据,然后从中提取有价值的数据 。具体步骤如下,首先发送请求获取目标网页,通过分析页面获得网页的源代码。其次,解析页面从网页源代码中提取出本研究所需的数据。该操作为数据的处理以及分析提供便利,因此需要给予高度重视。最后,以适当的格式保存抽取的部分数据。通常以 TXT文本、CSV或JSON等格式将数据保存在文本中。

一、python爬虫心得

学习python爬虫之前,在学校安排的《数据仓库与数据挖掘》课程中,学习了一线python的基础知识。之后我便在慕课和b站中自学了python爬虫的一些知识,对python爬虫有一定的知识储备。在本课程开课,跟着老师学习真正的python爬虫之后,才算是真正入门python爬虫,也才知道网上免费的课程其实只是教一些皮毛的东西,学校的老师教给我们的才是更深入更全面的知识,通过老师传授的知识,然后自己去爬取到的数据有一种莫名的震撼和成就感,终于感受到了python爬虫的有趣和魅力。
刚开始上老师的课时,感觉和学校里面老师的讲课方式不一样,学校里面的老师大多数偏向于讲一些书本上的理论知识,很少关心能否真正实践于生活。但老师的讲课方式恰恰相反,相对于其他老师更侧重于学习该课之后能否服务于将来的实际生活,能否在将来的工作和生活中起作用。
老师在讲课过程中,通过讲课内容然后教我们安装了一些python爬虫需要用到的软件,比如Anaconda、Pycharm、Mysql、Mongodb等,有了这些工具我们可以更好的进行爬虫学习。
学习一学期老师的课程之后,关于python爬虫我的一些总结,大概学习步骤为:
(1) 安装requests库和BeautifulSoup库;
(2) 获取爬虫所需的header和cookie
(3) 获取网页
(4) 解析网页
(5) 分析得到的信息,简化地址
(6) 爬取内容,清洗数据
(7) 将相应数据库连接进行数据存储
以上,有不足的地方,python这个语言需要一个不断学习的过程,python功能很多,爬虫只是其中一个功能,深入学习python我相信肯定还会有更大的收获,但目前肯定还是把python学透学精,所以结束该课程之后也还要继续学习python爬虫,多多实践,遇到问题首先学会自己去尝试解决,解决不了再去请教专业人士。这样子才会学到更多知识,才能再将来的工作中才会帮助到我们。

二、Pip模块

(1) Requests
requests是一个很实用的Python HTTP客户端库,爬虫和测试服务器响应数据时经常会用到,requests是Python语言的第三方的库,专门用于发送HTTP请求。
(2) urllib
urllib是Python内置的HTTP请求库,不需要额外安装,它包含4个模块。
(3) scrapy
scrapy是适用于Python的一个高层次的屏幕抓取和网站抓取框架,用于抓取网站站点并从页面中提取机构化的数据。可用于数据监测、数据挖掘等方面。
(4) gerapy_auto_extractor
gerapy-auto-extractor的Python项目详细描述Gerapy自动提取器这是Gerapy的自动提取器模块。
(5) pymysql
pymysql是一个连接mysql数据库的第三方模块,可作为连接mysql数据库的客户端,对数据库进行增删改查操作 。
(6) BeautifulSoup
Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。
(7) pymongo
pymongo是Python中用来操作MongoDB的一个库。 而MongoDB是一个基于分布式文件存储的数据库,旨在为WEB应用提供可扩展的高性能数据存储解决方案。. 其文件存储格式类似于JSON,叫BSON,不严谨、通俗地理解,就是Python中的字典键值对格式。
(8) gerapy
gerapy 是一款分布式爬虫管理框架,支持 Python 3,基于 Scrapy、Scrapyd、Scrapyd-Client、Scrapy-Redis、Scrapyd-API、Scrapy-Splash、Jinjia2、Django、Vue.js 开发,Gerapy 可以帮助我们:更方便地控制爬虫运行、更直观地查看爬虫状态、更实时地查看爬取结果、更简单地实现项目部署、更统一地实现主机管理、更轻松地编写爬虫代码。
(9) sqlalchemy
sqlalchemy是Python编程语言下的一款orm框架,此框架建立在数据库api之上,使用关系对象映射进行数据库操作。通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。

三、Scrapy框架爬取

1、Scrapy简述
Scrapy是一个可以爬取网站数据,为了提取结构性数据而编写的开源框架。Scrapy的用途非常广泛,不仅可以应用到网络爬虫中,还可以用于数据挖掘、数据监测以及自动化测试等。Scrapy是基于Twisted的异步处理框架,架构清晰、可扩展性强,可以灵活完成各种需求。
在Scrapy的工作流程中主要包括以下几个部分:
(1) Scrapy Engine(框架的引擎):用于处理整个系统的数据流,触发各种事件,是整个框架的核心。
(2) Scheduler(调度器):用于接收引擎发过来的请求,添加至队列中,在引擎再次请求时将请求返回给引擎。可以理解为从URL队列中取出一个请求地址,同时去除重复的请求地址。
(3) Downloader(下载器):用于从网络下载Web资源。
(4) Spiders(网络爬虫):从指定网页中爬取需要的信息。
(5) Item Pipline(项目管道):用于处理爬取后的数据,例如数据的清洗、验证以及保存。
(6) Downloader Middlewares(下载器中间件):位于Scrapy引擎和下载器之间,主要用于处理 引擎与下载器之间的网络请求与响应。
(7) Spider Middlewares(爬虫中间件):位于爬虫与引擎之间,主要用于处理爬虫的响应输入和请求输出。
(8) Scheduler Middlewares(调度中间件):位于引擎和调度之间,主要用于处理从引擎发送到调度的请求和响应。
2、配置Scrapy框架
A. Items.py的配置:设置title/url/content/student-id等几个列标签
调用scrapy包
B.Middlewares.py的配置:添加header
在这里插入图片描述
C. Pipelines.py的配置:配置scrapy与数据库的链接
加载pymongo数据包,并加载用户名、密码、端口号等。
D.Settings.py 的配置:添加浏览器身份
在这里插入图片描述
添加MONGODB数仓设置:
将数据仓库IP、数据仓库端口号、数据仓库数据库、数据仓库数据表单信息加到mongodb数据仓库。
3.创建爬虫python文件:打开powershell,输入scrapy genspider new
4.编写爬虫代码
在pycharm中打开我们创建的python爬虫文件,进行如下代码输入:
调用scrapy包,载入items文件里的NewDataItem字典,再载入上述三个相关的包。
设置一个url循环,将url的第一位和第二位数据放入item字典中的“site”和“item”中。
将学号放入item字典的“student_id”中,返回item。
5.数据存储
添加mongodb数据设置
在piplines中创建mongdb数据库链接
爬到的数据返回到item
在这里插入图片描述
6.结果截图
在这里插入图片描述

四、Gerapy的搭建流程

(1) 安装gerapy、scrapyd、pywin32、gerapy_auto_extractor模块
在这里插入图片描述
(2) 将数据迁移,生成表单
在这里插入图片描述
(3) 生成数据库
在这里插入图片描述
在这里插入图片描述
(4)创建用户
在这里插入图片描述
(5) 启动新的cmd,cd进入虚拟环境的启动Scripts文件,启动scrapy脚本
在这里插入图片描述
(6)不要关闭窗口,打开浏览器输入127.0.0.1:8000
在这里插入图片描述
(7)输入密码和用户名
创建新的主机,ip 为127.0.0.1 端口为8600
在这里插入图片描述
将脚本文件夹放入project的文件夹下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
名称为“南方网”,执行的文件名称NewsData,脚本为news,主机名localhost,调度方式为interval;
运行时间设置为1分钟,时区选择香港时间。

五、在Gerapy框架管理中配置项目并爬取数据

项目部署
在这里插入图片描述
运行结果:
在这里插入图片描述
在这里插入图片描述
Navicat中mongodb数据库导入的表单:
在这里插入图片描述

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

北欧--2022年Python爬虫心得 的相关文章

  • InterfaceError:连接已关闭(使用 django + celery + Scrapy)

    当我在 Celery 任务中使用 Scrapy 解析函数 有时可能需要 10 分钟 时 我得到了这个信息 我用 姜戈 1 6 5 django celery 3 1 16 芹菜 3 1 16 psycopg2 2 5 5 我也使用了psyc
  • Python PAM 模块的安全问题?

    我有兴趣编写一个 PAM 模块 该模块将利用流行的 Unix 登录身份验证机制 我过去的大部分编程经验都是使用 Python 进行的 并且我正在交互的系统已经有一个 Python API 我用谷歌搜索发现pam python http pa
  • 如何在android上的python kivy中关闭应用程序后使服务继续工作

    我希望我的服务在关闭应用程序后继续工作 但我做不到 我听说我应该使用startForeground 但如何在Python中做到这一点呢 应用程序代码 from kivy app import App from kivy uix floatl
  • 如何打印没有类型的defaultdict变量?

    在下面的代码中 from collections import defaultdict confusion proba dict defaultdict float for i in xrange 10 confusion proba di
  • 更改自动插入 tkinter 小部件的文本颜色

    我有一个文本框小部件 其中插入了三条消息 一条是开始消息 一条是结束消息 一条是在 单位 被摧毁时发出警报的消息 我希望开始和结束消息是黑色的 但被毁坏的消息 参见我在代码中评论的位置 插入小部件时颜色为红色 我不太确定如何去做这件事 我看
  • 如何在Windows上模拟socket.socketpair

    标准Python函数套接字 套接字对 https docs python org 3 library socket html socket socketpair不幸的是 它在 Windows 上不可用 从 Python 3 4 1 开始 我
  • 为 pandas 数据透视表中的每个值列定义 aggfunc

    试图生成具有多个 值 列的数据透视表 我知道我可以使用 aggfunc 按照我想要的方式聚合值 但是如果我不想对两列求和或求平均值 而是想要一列的总和 同时求另一列的平均值 该怎么办 那么使用 pandas 可以做到这一点吗 df pd D
  • Python:字符串不会转换为浮点数[重复]

    这个问题在这里已经有答案了 我几个小时前写了这个程序 while True print What would you like me to double line raw input gt if line done break else f
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • Python:尝试检查有效的电话号码

    我正在尝试编写一个接受以下格式的电话号码的程序XXX XXX XXXX并将条目中的任何字母翻译为其相应的数字 现在我有了这个 如果启动不正确 它将允许您重新输入正确的数字 然后它会翻译输入的原始数字 我该如何解决 def main phon
  • 循环中断打破tqdm

    下面的简单代码使用tqdm https github com tqdm tqdm在循环迭代时显示进度条 import tqdm for f in tqdm tqdm range 100000000 if f gt 100000000 4 b
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • Numpy 优化

    我有一个根据条件分配值的函数 我的数据集大小通常在 30 50k 范围内 我不确定这是否是使用 numpy 的正确方法 但是当数字超过 5k 时 它会变得非常慢 有没有更好的方法让它更快 import numpy as np N 5000
  • Nuitka 未使用 nuitka --recurse-all hello.py [错误] 编译 exe

    我正在尝试通过 nuitka 创建一个简单的 exe 这样我就可以在我的笔记本电脑上运行它 而无需安装 Python 我在 Windows 10 上并使用 Anaconda Python 3 我输入 nuitka recurse all h
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • 在python中,如何仅搜索所选子字符串之前的一个单词

    给定文本文件中的长行列表 我只想返回紧邻其前面的子字符串 例如单词狗 描述狗的单词 例如 假设有这些行包含狗 hotdog big dog is dogged dog spy with my dog brown dogs 在这种情况下 期望
  • 如何使用google colab在jupyter笔记本中显示GIF?

    我正在使用 google colab 想嵌入一个 gif 有谁知道如何做到这一点 我正在使用下面的代码 它并没有在笔记本中为 gif 制作动画 我希望笔记本是交互式的 这样人们就可以看到代码的动画效果 而无需运行它 我发现很多方法在 Goo
  • 您可以在 Python 类型注释中指定方差吗?

    你能发现下面代码中的错误吗 米皮不能 from typing import Dict Any def add items d Dict str Any gt None d foo 5 d Dict str str add items d f
  • PyAudio ErrNo 输入溢出 -9981

    我遇到了与用户相同的错误 Python 使用 Pyaudio 以 16000Hz 录制音频时出错 https stackoverflow com questions 12994981 python error audio recording

随机推荐

  • libcore.io.ErrnoException: open failed: EINVAL (Invalid argument)

    出现异常 04 16 17 58 52 714 W System err 23703 Caused by libcore io ErrnoException open failed EINVAL Invalid argument 04 16
  • 什么是游戏测试?

    在很多外行甚至行内非测试岗位人的眼里 游戏测试是很没有技术含量的活儿 门槛低 不过就是不断玩游戏 反馈问题 纯粹是体力活 如果真是这样 那我们到网吧随便拉几个玩家都可以做 早期的一些游戏测试确实是这样做的 但如今这样做已经不可能保证游戏的品
  • 算法应该怎样学习

    算法背景 了解该算法的背景知识 该算法要解决的问题 算法流程 了解该算法的流程 包括输入和输出 算法核心部分的具体实现 时间复杂度 了解该算法的时间复杂度 说明算法的执行效率 空间复杂度 了解该算法的空间复杂度 说明算法所需的存储空间 优点
  • MySQL提权篇

    一 Mysql提权必备条件 1 服务器安装Mysql数据库 利用Mysql提权的前提就是服务器安装了mysql数据库 且mysql的服务没有降权 Mysql数据库默认安装是以系统权限继承的 并且需要获取Mysql root账号密码 2 判断
  • 14:00面试,14:06就出来了,问的问题有点变态。。。

    从小厂出来 没想到在另一家公司又寄了 到这家公司开始上班 加班是每天必不可少的 看在钱给的比较多的份上 就不太计较了 没想到5月一纸通知 所有人不准加班 加班费不仅没有了 薪资还要降40 这下搞的饭都吃不起了 还在有个朋友内推我去了一家互联
  • 【生成式网络】入门篇(二):GAN的 代码和结果记录

    GAN非常经典 我就不介绍具体原理了 直接上代码 感兴趣的可以阅读 里面有更多变体 https github com rasbt deeplearning models tree master pytorch ipynb gan GAN 在
  • Kafka消费者Relance机制和分区机制

    kafka消费者Relance rebalance就是说如果消费组里的消费者数量有变化或消费的分区数有变化 kafka会重新分配消费者消费分区的关系 比如consumer group中某个消费者挂了 此时会自动把分配给他的分区交给其他的消费
  • MySQL如何删除#sql开头的临时表

    1 现象 巡检时发现服务器磁盘空间不足 通过查看大文件进行筛选是发现有几个 sql开头的文件 且存在超过100G及10G以上的文件 2 原因 如果MySQL在一个 ALTER TABLE操作 ALGORITHM INPLACE 的中间退出
  • MMdetection系列之Config配置文件(V3更新后)

    1 了解配置 MMDetection 和其他 OpenMMLab 存储库使用MMEngine 的配置系统 模块化 继承性设计 便于进行各种实验 2 配置文件的查看 在配置系统中采用模块化和继承性设计 便于进行各种实验 如果你想查看配置文件
  • Gin框架结合gorm使用

    Gin框架结合Gorm使用 目录 Gin框架结合Gorm使用 前言 一 介绍 二 使用步骤 1 创建项目 2 开始main go 3 router的初始化 4 controller的初始化 5 services的初始化 6 models的初
  • 比较对象相等性的四种方法

    比较对象相等性的四种方法 System Object定义了3个不同的方法 来比较对象的相等性 ReferenceEquals 和两个版本的Equals 再加上比较运算符 实际上是有四种比较相等的方式 在编程中实际上我们只需要这两种比较 c
  • 使用vue-cli脚手架创建vue项目

    本文主要介绍使用的是安装vue cli脚手架并使用vue cli脚手架来创建vue项目 1 前置条件 需要安装npm 和nodejs 查看npm 和nodejs版本是否符合要求 如果版本不符合要求 有可能会导致安装失败 查看npm版本 np
  • 数学(3) 各种数学分布,高斯,伯努利,二项,多项,泊松,指数,Beta,Dirichlet

    打算这里记录各种数学分布 随时更新 正态分布 正态分布又名高斯分布 若随机变量X服从一个数学期望为 mu 标准差为 sigma的正态分布 则记为 X N 2 X 65374 N mu sigma 2 其中期望 mu决定了分布位置 标准差 s
  • Linux-eth0 eth0:1 和eth0.1关系、ifconfig以及虚拟IP实现介绍

    eth0 eth0 1 和eth0 1三者的关系对应于物理网卡 子网卡 虚拟VLAN网卡的关系 物理网卡 物理网卡这里指的是服务器上实际的网络接口设备 这里我服务器上双网卡 在系统中看到的2个物理网卡分别对应是eth0和eth1这两个网络接
  • Android开机自启动C程序调试

    Android开机自启动C程序调试 本次记录是关于如何在rk3566的Android11版本下将led时钟显示添加成开机自启动的C程序 首先 当然是在sdk中会被执行到的 rc文件中将我们所需要执行的C程序添加为服务 可以在init rc或
  • 剑指 Offer 58 - II. 左旋转字符串(java+python)

    字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部 请定义一个函数实现字符串左旋转操作的功能 比如 输入字符串 abcdefg 和数字2 该函数将返回左旋转两位得到的结果 cdefgab 示例 1 输入 s abcdefg k
  • python-爬虫初识-自动登录(二)

    目录 一 BeautifulSoup模块详细介绍 二 自动登录github 一 BeautifulSoup模块详细介绍 BeautifulSoup是一个模块 该模块用于接收一个HTML或XML字符串 然后将其进行格式化 之后遍可以使用他提供
  • 自定义一个类加载器

    为什么要自定义类加载器 类加载机制 http www cnblogs com xrq730 p 4844915 html 类加载器 http www cnblogs com xrq730 p 4845144 html 这两篇文章已经详细讲解
  • HKPCA Show携手电巢直播开启“云”观展!掀起一场电子人的顶级狂欢!

    近日 国际电子电路 深圳 展览会 HKPCA Show 已于深圳国际会展中心圆满举办 本次展览划分七大主题专区 面积超50 000平方米 展位超2500个 汇聚众多行业知名 有影响力的参展商 引用现场观众的一句话讲 这种规模的电子展览会真是
  • 北欧--2022年Python爬虫心得

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 前言 网络爬虫也称为 蜘蛛 它可以在海量的互联网信息爬取需要的信息 简单地说它是模拟人类请求网站的行为 即自动请求网页 抓取数据 然后从中提取有价值的数据 具体步骤如下 首先