py spider 第一天

2024-01-11 14:38
文章标签 py 第一天 spider

本文主要是介绍py spider 第一天,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

总结: selenium只是个虚拟的浏览器,或者说是一个web自动化测试工具,而不是真正意义上的爬虫框架

一、Scrapy

Scrapy A Fast and Powerful Scraping and Web Crawling Framework

关键词是和,使用过确实感觉如此。我感觉就是一个全家桶,它把爬虫所需要的大部分东西(为什么不是全部,下面会说到)都集成到这个框架中,如:下载器、中间件、调度器、Spider、调试、数据流等等所有功能全部都在这一个框架中,你所需要做的只是在命令行中输入:

Scrapy 的缺点也是显而易见的:不支持分布式。scrapy中scheduler是运行在队列中的,而队列是在单机内存中的,服务器上爬虫是无法利用内存的队列做任何处理。但是也有解决办法,参见rmax/scrapy-redis

二、selenium

selenium :最后来到今天的主角Selenium, 首先看看官方怎么说

What is Selenium?

Selenium automates browsers. That’s it! What you do with that power is entirely up to you. Primarily, it is for automating web applications for testing purposes, but is certainly not limited to just that. Boring web-based administration tasks can (and should!) be automated as well.

Selenium has the support of some of the largest browser vendors who have taken (or are taking) steps to make Selenium a native part of their browser. It is also the core technology in countless other browser automation tools, APIs and frameworks.

重点是:,翻译过来就是:它是用于自动化Web应用程序的测试目的,但肯定不仅限于此,简单来说,Selenium 是web自动化测试工具集,如果你去Google上搜索 Selenium ,大多结果都是相关内容,比较出名的有博客园的虫师,写的两本书也都是关于自动化测试方面的

至于为啥爬虫要用selenium,我在某些博客上找到有人这样说,我也不知道怎么说

对于一般网站来说scrapy、requests、beautifulsoup等都可以爬取,但是有些信息需要执行js才能显现,而且你肉眼所能看到的基本都能爬取下来,在学习中遇到了,就记录下来方便以后查看。

webdrive是selenium中一个函数:

from selenium import webdriver

driver = webdriver.Chrome()

driver.get(‘网址’)

其中PhantomJS同时可以换成Chrome、Firefox、Ie等等,但是PhantomJS是一个无头的浏览器,运行是不会跳出相应的浏览器,运行相对效率较高。在调试中可以先换成Chrome,方便调试,最后再换成PhantomJS即可。

下面是吐槽时间,说一说的缺点:

速度慢。每次运行爬虫都打开一个浏览器,如果没有设置,还会加载图片、JS等等一大堆东西;

占用资源太多。有人说,把换成无头浏览器,原理都是一样的,都是打开浏览器,而且很多网站会验证参数,如果对方看到你是以去访问,会BAN掉你的请求,然后你又要考虑更换请求头的事情,事情复杂程度不知道多了多少,为啥学Python?因为Python简单啊,如果有更快、更简单的库可以实现同样的功能,为什么不去使用呢?

对网络的要求会更高。加载了很多可能对您没有价值的补充文件(如css,js和图像文件)。 与仅仅请求您真正需要的资源(使用单独的HTTP请求)相比,这可能会产生更多的流量。

**

BeautifulSoup

BeautifulSoup是一个模块,该模块用于接收一个HTML或XML字符串,然后将其进行格式化,之后就可以使用他提供的方法进行快速查找指定元素,从而使得在HTML或XML中查找指定元素变得简单。

四大对象种类:
Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:

Tag:HTML 中的一个个标签,比如a,div等,有两个属性name和attrsNavigableString:标签内部的文字,可以用 .string获得BeautifulSoup:表示的是一个文档的全部内容Comment:注释

这篇关于py spider 第一天的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/594701

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

Java基础回顾系列-第一天-基本语法

基本语法 Java基础回顾系列-第一天-基本语法基础常识人机交互方式常用的DOS命令什么是计算机语言(编程语言) Java语言简介Java程序运行机制Java虚拟机(Java Virtual Machine)垃圾收集机制(Garbage Collection) Java语言的特点面向对象健壮性跨平台性 编写第一个Java程序什么是JDK, JRE下载及安装 JDK配置环境变量 pathHe

UMI复现代码运行逻辑全流程(一)——eval_real.py(尚在更新)

一、文件夹功能解析 全文件夹如下 其中,核心文件作用为: diffusion_policy:扩散策略核心文件夹,包含了众多模型及基础库 example:标定及配置文件 scripts/scripts_real:测试脚本文件,区别在于前者倾向于单体运行,后者为整体运行 scripts_slam_pipeline:orb_slam3运行全部文件 umi:核心交互文件夹,作用在于构建真

LibSVM学习(六)——easy.py和grid.py的使用

我们在“LibSVM学习(一)”中,讲到libSVM有一个tools文件夹,里面包含有四个python文件,是用来对参数优选的。其中,常用到的是easy.py和grid.py两个文件。其实,网上也有相应的说明,但很不系统,下面结合本人的经验,对使用方法做个说明。        这两个文件都要用python(可以在http://www.python.org上下载到,需要安装)和绘图工具gnup

《C++标准库》读书笔记/第一天(C++新特性(1))

C++11新特性(1) 以auto完成类型自动推导 auto i=42; //以auto声明的变量,其类型会根据其初值被自动推倒出来,因此一定需要一个初始化操作; static auto a=0.19;//可以用额外限定符修饰 vector<string> v;  auto pos=v.begin();//如果类型很长或类型表达式复杂 auto很有用; auto l=[] (int

Android--第一天

创建AVD: 启动AVD: 点击按钮:Launch如下: 更换来电铃声: Window-->Show View-->Other... 点击进入:展开Android文件夹-->选择File Explorer:操作如下图 要想在音乐播放器上有该音乐,必须先“卸载SD卡,在安装SD卡”这样就可以了,声音--

Oracle第一天之sql

SQL 支持下列类别的命令:  数据定义语言(DDL)  数据操纵语言(DML)  事务控制语言(TCL)  数据控制语言(DCL) 数据类型 字符数据类型    :long   char  varchar2 CHAR: 当需要固定长度的字符串时,使用 CHAR 数据类型。          CHAR 数据类型存储字母

Oracle第一天之Oracle介绍

Oracle数据库由操作系统文件组成,这些文件提供数据库信息提供实际物理存储区 物理组件  : 数据文件+控制文件+日志文件 逻辑组件  :         数据库 | 表空间     至少一个:  名为 SYSTEM的系统表空间,由数据文件组成,一一对应;表空间的大小=所有构成该表空间的

python IDLE的执行py文件

Import 在IDLE下也可以用import来运行文件。如运行test.py文件:improt test 但是对于一个文件,improt只能在第一次导入时运行文件。在第一次导入之后,其他的导入都不会再工作,甚至在另一个窗口中改变并保存了模块的源代码文件也不行。实验了下,发现重启IDEL后依然不行。这是有意设计的结果。导入是一个开销很大的操作以至于每个程序不能够重复多于1次。 Reload

YOLOV5入门教学-common.py文件

在 YOLOv5 框架中,common.py 文件是一个核心组件,负责定义深度学习模型的基础模块和常用操作。无论是卷积层、激活函数、特征融合还是其他复杂的模型结构,common.py 都提供了灵活且高效的实现。在这篇文章中,我们将深入解析 common.py 的设计思想、各个模块的功能以及它在 YOLOv5 中的应用。通过理解该文件的实现细节,不仅可以帮助我们更好地掌握 YOLOv5 的内部结构,