爬虫基础知识点汇总(html文件基础和4个常用库 超级详细长文预警)

1 篇文章 4 订阅
订阅专栏

爬虫基础知识点汇总(内含HTML文件基础、Selenium库、Request库、BeautifulSoup库和Scrapy库)

10000+字长文预警!!! 知识点详细丰富

(ps:作为一名爬虫半年的小白,在学习爬虫期间基本90%以上的问题都能CSDN上找到答案,CSDN真是我的生命源泉哈哈哈;现在我也掌握了一些基础的爬虫要点,想要分享给新入坑的同学,让大家少走一些弯路~)

本知识点汇总从HTML文件基础、Selenium库、Request库、BeautifulSoup库和Scrapy库五个方面论述,五个方面以大标题的形式展现,并在每个标题后面附有思路论述图。

一、HTML文件基础

html文件基础的图片
超文本标记语言(缩写HTML,全称是HyperText Mark-up Language),是迄今为止网络上应用最为广泛的语言,也是构成网页文档的主要语言。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字、图形、动画、声音、表格、链接等。HTML的结构包括头部(Head)、主体(Body)两大部分,其中头部描述浏览器所需的信息,而主体则包含所要说明的具体内容。

HTML元素由开始标签和结束标签组成。标签的标准格式有两种,一种是单标记,一种是双标记,双标记有一对开始< >和结束< />,而单标记只有一个开始标签如< />。一般标签名推荐用小写,标签具有属性,属性用来表示标签的特征。
例如:

<p>这是一个段落</p>      <img src=" 这里表示图片的路径 " />

1.基本结构

HTML文档的基本结构包括三部分,除了上面提到的头部和主体,还包括起始标记。第一,html是网页的起始标签,也称为根标签,所有的网页标签都在html标签中;第二,head 标签用于定义文档的头部,它是所有头部元素的容器。头部元素有title、script、 style、link、 meta等标签;第三,在body标签之间的内容是网页的主要内容,如h1、p、a等网页内容标签,在这里的标签中的内容会在浏览器中显示出来。

这里着重对网页的头部标签进行介绍,因为头部标签规定了网页的各种基本信息,在我们用爬虫爬取信息时也会经常寻找、修改头部中的信息。HTML的头部元素是以head为开始标记,以/head为结束标记。它用于包含当前文档的相关信息,可包含title元素、meta元素等,分别用来定义页面的标题、编码。使用head元素可以将基本信息部分和页面主体内容区分开来。页面标题元素title,一般是用来说明页面用途的,它显示在浏览器的标题栏中。在HTML文档中,标题信息设置在页面的头部,也就是head标签之间。页面信息元素:meta,一般用来定义页面的附加信息,其中包括页面的作者、版权、关键字等相关信息。meta标记又包括name、content和http-equiv等信息的定义,name属性用来制定文档中附加信息的名称,content属性用来指定文档中附加信息的值,http-equiv属性和name属性类似,用来指定附加信息的名称。在浏览器加载页面之前,服务器会把http-equiv属性定义的相关信息发送给浏览器,便于在浏览器中正确显示页面。

2.超链接标记a

a标签定义超链接,用于从一张页面链接到另一张页面,正是因为超链接的存在,HTML语言称得上是超文本标记语言。a 元素最重要的属性是href属性,它指示链接的目标或页面的 URL,可以链接https和http地址、自定义的page,对象(如图片)、用#伪链接等。target规定在何处打开链接文档,它有五个选项:_blank:在新窗口中打开被链接文档,_self:默认。在相同的框架中打开被链接文档;_parent:在父框架集中打开被链接文档,_top:在整个窗口中打开被链接文档,framename:在指定的框架中打开被链接文档。name规定锚的名称。我们在编写爬虫时,常常需要获得a标签中的URL链接或者构造URL爬取列表,这就需要用到它的href属性。

3.css选择器

层叠样式表(全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。CSS 能够对网页中元素位置的排版进行像素级精确控制,拥有对网页对象和模型样式编辑的能力。

用css对网页元素修饰布局时,有行内样式,内部样式表和外部样式表三种。目前,外部样式表写法最流行,处理效率最高;但从优先级上说,行内样式内部样式表外部样式表。我们分析网页结构时就可以用这种方式将真正作用的属性和对象匹配起来。Css功能强大,可以为元素设置font、background、border、margin、padding、text-align等等属性,但当同一种标签重复出现时,只用标签名无法确定该元素的身份,所以css用选择器来定位标签。

ID选择器:优先级最高,页面中不能有相同id出现。命名规则是以字母、下划线开头,不能以数字开头。在所要设置的标签中加入属性id=“n”。

类选择器:优先级仅次于id选择器。在一个页面中可以有多个相同的类名。不能以数字开头,在所要设置的标签中加入class=“n”。

标签名选择器:同时控制同一标签。

群组选择器:把几个id,class名相同的取出来,写在一起,中间用英文状态下的逗号隔开。

后代选择器又称为包含选择器,用来选择元素或元素组的后代,其写法就是把外层标签写在前面,内层标签写在后面,中间用空格分隔。当标签发生嵌套时,内层标签就成为外层标签的后代。

子元素选择器只能选择作为某元素子元素的元素。其写法就是把父级标签写在前面,子级标签写在后面,中间跟一个 进行连接,符号左右两侧需要各保留一个空格。这里的子指的伪类选择器,用 2个点,就是冒号。比如 :link{}儿子,不包含孙子、重孙子之类。

并集选择器(CSS选择器分组)是各个选择器通过逗号连接而成的,任何形式的选择器(包括标签选择器、class类选择器id选择器等),都可以作为并集选择器的一部分。如果某些选择器定义的样式完全相同,或部分相同,就可以利用并集选择器为它们定义相同的CSS样式。

4.Xpath选择器

XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。XPath基于XML的树状结构,有不同类型的节点,包括元素节点,属性节点和文本节点,提供在数据结构树中找寻节点的能力。

XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。路径表达式是从一个XML节点(当前的上下文节点)到另一个节点、或一组节点的书面步骤顺序,这些步骤以"/"字符分开。在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML 文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。父(Parent),每个元素以及属性都有一个父。子(Children),元素节点可有零个、一个或多个子。

同胞(Sibling),拥有相同的父节点。先辈(Ancestor),某节点的父、父的父等等。后代(Descendant),某个节点的子,子的子等等。通过对xpath节点轴的选择,100多个函数的调用,运算符的使用,我们做爬虫时用xpath也可以容易的定位到想要爬取的内容。

5.HTML文档常用标记

通过了解HTML文档的常用标记,使我们能更快更准的分析网页结构,从而编写出正确的爬虫框架和高效的爬取方法。

标签含义
h1…/h1标题字大小(h1~h6)
p····/p段落
ul…/ul无序列表
ol…/ol有序列表
li·····/li列表项目
a href=”…”…/a超链接
font字体
sub下标
sup上标
br换行
img src=’”…”/图像定义
hr水平线
del删除线
frame框架集的窗口和框架

二、Selenium库

Selenium爬取要点
Selenium 是一个用于Web应用程序测试的工具,支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性,即测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。Selenium支持自动录制动作和自动生成,Net、Java、Perl等不同语言的测试脚本。支持多种操作系统如Windows、Linux、IOS、Android等。Selenium3.x调用浏览器必须有一个webdriver驱动文件,然后配置浏览器的环境变量。

1.Selenium提供了以下8种定位元素的方式

定位一个元素定位多个元素含义
find_element_by_idfind_elements_by_id通过元素id定位
find_element_by_namefind_elements_by_name通过元素name定位
find_element_by_xpathfind_elements_by_xpath通过xpath表达式定位
find_element_by_link_textfind_elements_by_link_tex通过完整超链接定位
find_element_by_partial_link_textfind_elements_by_partial_link_text通过部分链接定位
find_element_by_tag_namefind_elements_by_tag_name通过标签定位
find_element_by_class_namefind_elements_by_class_name通过类名进行定位
find_element_by_css_selectorfind_elements_by_css_selector通过css选择器进行定位

举例说明如:

通过id定位,dr.find_element_by_id(“kw”);

通过name定位,dr.find_element_by_name(“wd”);

通过xpath定位,dr.find_element_by_xpath("/html/body/form/span/input");

通过css定位,dr.find_element_by_css_selector("[name=wd]")等等。

2.控制浏览器的操作

从selenium库中可以导入webdriver来控制浏览器的操作,下面是一些操作方法

方法说明
set_window_size()设置浏览器的大小
back()控制浏览器后退
forward()控制浏览器前进
refresh()刷新当前页面
clear()清除文本
send_keys (value)模拟按键输入
click()单击元素
submit()用于提交表单
get_attribute(name)获取元素属性值
is_displayed()设置该元素是否用户可见
size返回元素的尺寸
text获取元素的文本

举例说明如:

刷新浏览器,browser.refresh();

设置浏览器的窗口大小,browser.set_window_size(1400,800);

设置链接内容,browser.find_element_by_link_text(“新闻”).click()等。

3.鼠标事件

在 WebDriver 中,将关于鼠标操作的方法封装在 ActionChains 类中,下面是webdriver中的鼠标事件。

方法说明
ActionChains(driver)构造ActionChains对象
context_click()执行鼠标悬停操作
move_to_element(above)右击
double_click()双击
drag_and_drop()拖动
move_to_element(above)执行鼠标悬停操作
context_click()用于模拟鼠标右键操作, 在调用时需要指定元素定位
perform()执行所有 ActionChains 中存储的行为,可以理解成是对整个操作的提交动作

举例说明如:
定位到要悬停的元素,
element= driver.find_element_by_link_text(“设置”);

对定位到的元素执行鼠标悬停操作,ActionChains(driver).move_to_element(element).perform()等等。

4.模拟键盘操作

Selenium中的Key模块供了模拟键盘按键的方法,即send_keys()方法。它不仅可以模拟键盘输入,也可以模拟键盘的操作,下面是selenium的常用的模拟键盘操作

模拟键盘按键说明
send_keys(Keys.BACK_SPACE)删除键(BackSpace)
send_keys(Keys.SPACE)空格键(Space)
send_keys(Keys.TAB)制表键(Tab)
send_keys(Keys.ESCAPE)回退键(Esc)
send_keys(Keys.ENTER)回车键(Enter)

5.断言属性和说明

我们使用selenium库时,不管是在做功能测试还是自动化测试,最后一步需要拿实际结果与预期进行比较。这个比较的称之为断言。通过我们获取title 、URL和text等信息进行断言,下面是获取的断言的属性和说明

属性说明
title用于获得当前页面的标题
current_url用户获得当前页面的URL
text获取搜索条目的文本信息

举例说明如:
获取结果数目,user = driver.find_element_by_class_name(‘nums’).text。

定位一组元素的方法与定位单个元素的方法类似,唯一的区别是在单词element后面多了一个s表示复数。
举例如:
定位一组元素,elements = driver.find_elements_by_xpath(’//div/h3/a’),然后可以用for循环遍历出每一条搜索结果的标题。

6.警告框处理

在WebDriver中处理JavaScript所生成的alert、confirm以及prompt十分简单,具体做法是使用 switch_to.alert 方法定位到 alert/confirm/prompt,然后使用text/accept/dismiss/ send_keys等方法进行操作,下面是webdriver中的警告框处理

方法说明
text返回 alert/confirm/prompt 中的文字信息
accept()接受现有警告框
dismiss()解散现有警告框
send_keys(keysToSend)发送文本至警告框。keysToSend:将文本发送至警告框。

7.下拉框操作

利用selenium爬取网页信息时,有时我们会碰到下拉框,我们要选择下拉框选择操作,导入选择下拉框Select类,使用该类处理下拉框操作,下面是select类的方法

方法说明
select_by_value(“选择值”)select标签的value属性的值
select_by_index(“索引值”)下拉框的索引
select_by_visible_testx(“文本值”)下拉框的文本值

8.cookie操作

在爬取网页时,有时候我们需要验证浏览器中cookie是否正确,因为基于真实cookie的测试是无法通过白盒和集成测试进行的。WebDriver提供了操作Cookie的相关方法,可以读取、添加和删除cookie信息,下面是WebDriver操作cookie的方法

方法说明
get_cookies()获得所有cookie信息
get_cookie(name)返回字典的key为“name”的cookie信息
add_cookie(cookie_dict)添加cookie。“cookie_dict”指字典对象,必须有name 和value 值
delete_cookie(name,optionsString)删除cookie信息。“name”是要删除的cookie的名称,“optionsString”是该cookie的选项,目前支持的选项包括“路径”,“域”
delete_all_cookies()删除所有cookie信息

9.滚动条设置

JavaScript来控制浏览器的滚动条。WebDriver提供了execute_script()方法来执行JavaScript代码。window.scrollTo()方法用于设置浏览器窗口滚动条的水平和垂直位置。方法的第一个参数表示水平的左间距,第二个参数表示垂直的上边距。其代码如下,js="window.scrollTo(100,450);"driver.execute_script(js)。

10.关闭浏览器窗口

WebDriver还提供了close()方法,用来关闭当前窗口。对于多窗口的处理,我们就要用到close()方法进行关闭了,下面是关闭浏览器窗口的方法

方法说明
close()关闭单个窗口
quit()关闭所有窗口

三、Requests库

requests库
Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库,完全满足HTTP测试的要求。http即超文本传输协议,是基于一个“请求与响应”模式的,无状态的应用层协议。它采用url作为定位网络资源的标识符,url格式如下:

http//host[:port][path]
host主机域名或ip地址
Port端口号,默认80
Path请求资源的路径

1.requests库的七个方法

方法说明
requests.request()构造一个请求,支撑以下各方法的基础方法
requests.get()获取HTML网页的主要方法,对应于HTTP的GET
requests.head()获取HTML网页头信息的方法,对应于HTTP的HEAD
requests.post()向HTML网页提交POST请求的方法,对应于HTTP的POST
requests.put()向HTML网页提交PUT请求的方法,对应于HTTP的PUT
requests.patch()向HTML网页提交局部修改请求,对应于HTTP的PATCH
requests.delete()向HTML页面提交删除请求,对应于HTTP的DELETE

2. 13个参数的形式和描述

每个方法里都包含两个以上的参数,有的是默认参数不需要设置,有的参数需要手动设置。Requests库中的控制访问参数一共有13个,下面是13个参数的形式和描述

参数描述
params字典或字节序列,作为参数增加到url中
data字典,字节薛烈或文件对象,作为request的内容
jsonjson 格式的数据,作为request的内容
headers字典,http定制头
cookies字典或cookiejar,request中的cookie
auth元组类型,支持http认证功能
files字典类型,传输文件
timeout设定超时时间,秒为单位
proxies字典类型,设定访问代理服务器,可以增加登录认证
allow_redirectsTrue/False,默认为True,重定向开关
streamTrue/False,默认为True,获取内容立即下载开关
verifyTrue/False,默认为True,认证ssl证书开关

3. 7个属性

使用requests方法后,会返回一个response对象,其存储了服务器响应的内容,response的对象又包括7个属性,下面是response对象的属性和说明

属性说明
r.status_codeHTTP请求的返回状态,200表示连接成功,404表示失败
r.textHTTP响应内容的字符串形式,即,url对应的页面内容
r.encoding从HTTP header中猜测的响应内容编码方式
r.apparent_encoding从内容中分析出的响应内容编码方式(备选编码方式)
r.contentHTTP响应内容的二进制形式

4.requests库的异常说明

用requests库进行爬虫编写时,常常会遇到特殊的异常情况,我们可以用requests库的异常处理来判断程序是否出现了问题,下面是requests库的异常和说明

异常说明
requests.ConnectionError网络连接错误异常,如DNS查询失败、拒绝连接等 requests.HTTPError
requests.URLRequiredURL缺失异常
requests.TooManyRedirects超过最大重定向次数,产生重定向异常
requests.ConnectTimeout连接远程服务器超时异常
requests.Timeout请求URL超时,产生超时异常
r.raise_for_status()如果不是200,产生异常requests.HTTPError

5.爬取的通用框架

我们在用requests爬取网页时,要先获得网页上的内容,再进行下一步的筛选,因此我们一定会用到requests.get()函数,下面给出用requests库爬取网页的通用框架

import requests
def getHTMLtext(url):
    try:
        r=requests.get(url,timeout=30)
        r.raise_for_status()  #如果状态不为200,引发httperror异常
        r.encoding=r.apparent_encoding
        return r.text  
    except:
        return "产生异常"
    print(r.text)  #即可打印查看爬取到的网页内容(之后还需用BeautifulSoup库解析)
    
(url为想要爬取的网页链接)

四、BeautifulSoup库

BeautifulSoup库
BeautifulSoup库是一个解析HTML或XML文件的第三方库。提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档能为用户提供需要抓取的数据。Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。除非文档没有指定一个编码方式,Beautiful Soup就不能自动识别编码方式了但仅仅只需说明一下原始编码方式。

1.支持的解析器

Beautiful Soup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,一共提供4种解析器供我们使用。

解析器使用方法
Python标准库BeautifulSoup(markup, “html.parser”)
lxml HTML解析器BeautifulSoup(markup, “lxml”)
lxml XML解析器BeautifulSoup(markup, “xml”)
html5libBeautifulSoup(markup, “html5lib”)

2.BeautifulSoup类的基本元素

BeautifulSoup解析的文件一般包含三种节点:元素节点 - 通常指HTML 或 XML的标签;文本节点 - 标签内部的文本内容;属性节点 - 每个标签的属性。BeautifulSoup库查找到文档里的一个或多个标签元素,并获取每个标签里的文本和属性。下面介绍BeautifulSoup类的基本元素

基本元素说明
Tag标签,最基本的信息组织单元,分别用和/标明开头和结尾
Name标签的名字, p … /p 的名字是’p’,格式: tag .name
Attributes标签的属性,字典形式组织,格式: tag .attrs
NavigableString标签内非属性字符串,…/中字符串,格式: tag .string
Comment标签内字符串的注释部分,一种特殊的Comment类型

对上面的基本元素举例说明
用 BeautifulSoup 可以很方便地获取Tags,如soup.a;
获取name如 soup.a.name;
获取attributes如soup.p.attrs;
获取NavigableString,如soup.p.string;
Comment 对象是一个特殊类型的NavigableString对象,如type(soup.a.string)

3.find和find_all方法

find(tag, attrs, recursive,string ,**kwargs):获取一个元素,参数的含义见下表
find_all()方法来查找标签元素:.find_all(name, attrs, recursive, string, **kwargs) ,返回一个列表类型,存储查找的所有符合条件的元素

参数说明
name对标签名称的检索字符串
attrs对标签属性值的检索字符串,可标注属性检索
recursive是否对子孙全部检索,默认True
string…/中字符串区域的检索字符串
**kwargs控制参数,上面已经提过,不再赘述

举例如soup.find_all(id=’link1’),表示查找所有id名为link1的标签,返回一个列表。

4.lambda表达式

soup.findAll(lambda tag: len(tag.attrs)) 获取有两个属性的元素

5.其他节点的获取

获取儿子标签结点、子孙结点:

代码含义
tag{soup}.children迭代类型,儿子标签结点
tag{soup}.descendants迭代类型,子孙标签结点
tag{soup}.contents列表类型,儿子标签结点

获取父亲结点、祖先结点:

代码含义
tag.parent标签类型,父亲结点
tag.parents迭代类型,所有的祖先结点

获取兄弟节点:

代码含义
tag.previous_sibling标签类型,前一个兄弟结点
tag.next_sibling标签类型,后一个兄弟结点
tag.previous_siblings迭代类型,前面所有的兄弟结点
tag.next_siblings迭代类型,后面所有的兄弟结点

举例如for siblings in soup.a.next-siblings,表示循环遍历a标签之后的平行节点(兄弟节点)。

6.css选择器

我们可以利CSS选择器来筛选元素,用到的方法是 soup.select(),返回类型是 list,一般有如下五种方法。

查找方法举例说明
通过标签名查找soup.select(‘title’)
通过类名查找soup.select(’.sister’)
通过id名查找soup.select(’#link1’)
组合查找soup.select(‘p #link1’)(表示查找 p 标签中id 等于 link1的内容)
属性查找soup.select(‘a[href=“http://example.com/elsie”]’)

以上的 select 方法返回的结果都是列表形式,可但我们以遍历形式输出,用 get_text() 方法来获取它的内容。

7.标准选择器find与select方法的区别

1.find方法返回的是单个元素,find_all方法返回的是一个元素列表,而select方法永远返回的是元素列表。如果使用了select方法查找到了单个元素,要先加列表索引[0],然后才可以调用get_text()方法获取文本。

2.find方法还支持方法参数查询,比select方法更强大。

五、Scrapy库

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

1.整体架构

Scrapy 使用了 Twisted异步网络库来处理网络通讯,包括了以下组件:

1.引擎(Scrapy),用来处理整个系统的数据流, 触发事务(框架核心)

2.调度器(Scheduler),用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址

3.下载器(Downloader),用于下载网页内容, 并将网页内容返回给蜘蛛(Scrapy下载器是建立在twisted这个高效的异步模型上的)

4.爬虫(Spiders),爬虫是主要爬取网页的, 用于从特定的网页中提取自己需要的信息, 即所谓的实体(Item)。用户也可以从中提取出链接,让Scrapy继续抓取下一个页面。

5.项目管道(Pipeline),负责处理爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。当页面被爬虫解析后,将被发送到项目管道,并经过几个特定的次序处理数据。

6.下载器中间件(Downloader Middlewares),位于Scrapy引擎和下载器之间的框架,主要是处理Scrapy引擎与下载器之间的请求及响应。

7.爬虫中间件(Spider Middlewares),介于Scrapy引擎和爬虫之间的框架,主要工作是处理蜘蛛的响应输入和请求输出。

8.调度中间件(Scheduler Middewares),介于Scrapy引擎和调度之间的中间件,从Scrapy引擎发送到调度的请求和响应。

而我们使用scrapy框架时,由于很多部分已经自动搭建完成,我们一般只需编写spiders里面的内容,编写爬取信息的方式和itempipelines中的内容,编写对采集的数据进行合适的操作,如清理、检验、查重等。编写完这两个主要部分后,根据爬取网页的实际情况对其他部分做细微的修改就完成了。

2.Scrapy的运行流程

1.引擎从调度器中取出一个链接(URL)用于接下来的抓取

2.引擎把URL封装成一个请求(Request)传给下载器

3.下载器把资源下载下来,并封装成应答包(Response)

4.爬虫解析Response,通过engine传给spiders

5.spider如果解析出实体(Item),则交给实体管道进行进一步的处理

6.spider如果解析出的是链接(URL),则把URL交给调度器等待抓取

3.Scrapy的常用命令

命令含义
scrapy --help查看scrapy的基本命令
scrapy version -v查看scrapy版本和各组件的信息
scrapy startproject xx创建一个爬虫工程
scrapy genspider name site.com要进入工程目录下
scrapy parse url使用固定的parse函数解析某个页面
scrapy runspider xx.py运行单个爬虫(扩展名后要加.py)
scrapy crawl name运行工程里的爬虫(不用添加文件的扩展名)
scrapy bench检测scrapy是否安装成功
scrapy list查看工程文件中有多少条爬虫

4.Scrapy框架的相关文件说明

scrapy.cfg,项目的配置信息,主要为Scrapy命令行工具提供一个基础的配置信息。(真正爬虫相关的配置信息在settings.py文件中)

items.py,设置数据存储模板,用于结构化数据,如:Django的Model

Pipelines,数据处理行为,如:一般结构化的数据持久化

settings.py,配置文件,如:递归的层数、并发数,延迟下载等

Spiders,爬虫目录,如:创建文件,编写爬虫规则

5.Scrapy框架常与Yield关键字搭配使用

yield 是一个类似 return 的关键字,只是这个函数返回的是个生成器,也是可迭代对象。当调用这个函数的时候,函数内部的代码并不立马执行,只是返回一个生成器对象。可以与for循环搭配使用,不断迭代。第一次迭代中函数会执行,从开始到达 yield 关键字,然后返回 yield 后的值作为第一次迭代的返回值。然后,每次执行这个函数都会继续执行函数内部定义的那个循环的下一次,再返回那个值,直到没有能返回的值。
举例如:

def gen(n):
     	for i in range(n)
     	  	yield i**2

利用yield关键字,有利于减小服务器资源,提高爬虫的运行效率。

第一次写博客,查找资料用了好几天,编辑格式又用了一上午,但我完成之后还是觉得很开心!

小伙伴们既然都看到这句话了,那就动手点个赞评个论把!!!

HTML基础知识点
qq_44768644的博客
08-06 720
介绍HTML基础知识点详细!!!
爬虫知识点总结
weixin_42894309的博客
12-17 4617
爬虫总结 day01 1.什么是爬虫爬虫就是:模拟浏览器发送请求,获取响应 2.爬虫的分类,爬虫的流程 聚焦爬虫:针对特定的网站的爬虫 准备url地址 --&gt;发送请求 获取响应–&gt; 提取数据–&gt; 保存 获取响应–&gt; 提取url地址,继续请求 通用爬虫:搜索引擎的爬虫 抓取网页–&gt; 数据存储–&gt;预处理–&gt; 提供检索服务,网站排名 3.浏...
简单认识HTMLCSS
tzy2358的博客
03-13 831
HTML(超文本标记语言)是一种用于创建网页的标准标记语言。它由一系列的标签组成,这些标签用于定义网页的结构、样式和内容。HTML标签包括开标签和闭标签,它们之间用于包裹网页中的内容。TML定义了文本、图像、链接、表格等元素的语义标签,这些标签描述了元素的含义和作用,使得浏览器能够正确地解释和渲染网页。同时,HTML也支持添加样式和脚本,使得网页更加丰富和交互。WEB前端:HTML+CSS+JavaScriptHTML:结构标准,超文本标记语言,负责通过标签来表达网页的页面结构。
Python爬虫开发基础⑤】HTML概述与基本标签详解
z135733的博客
06-14 2798
HTML(Hypertext Markup Language)是一种标记语言,用于创建和呈现网页。它是构建网页的基础,并且具有简单易学的语法规则。HTML以标签为基本单位,通过嵌套和属性来描述和格式化网页上的内容和结构。HTML最初由蒂姆·伯纳斯-李(Tim Berners-Lee)在1990年创造,旨在促进信息共享和互联网上各种文档之间的链接。如今,HTML成为了万维网的核心技术之一,被广泛应用于网页制作、网站开发和跨平台内容交互等领域。内容(结构):是我们在页面中可以看到的数据。我们称之为内容。
爬虫基础知识点
qq_52262831的博客
11-11 2766
1.爬虫的概念 模拟浏览器,发送请求,获取响应。 2.爬虫的作用 数据采集 软件测试 抢票 网站上的投票 网络安全 3.爬虫的分类 爬虫根据数量:分为通用爬虫、聚焦爬虫 聚焦爬虫根据是否获取数据:分为:功能性爬虫(不读取数据,只为实现某一功能)、数据增量爬虫(获取数据,用于后续分析) 数据增量爬虫根据url与数据的关系:分为url与数据同时变化、url不变数据变化。 4.爬虫的流程 url或url_list(网址或网址列表) 发请求,获取响应 解析 5.http、https
2.初始爬虫HTML基础知识
hf_xiexiaoming的博客
05-17 155
1、HTML 是什么 HTML(Hyper Text Markup Language)是用来描述网页的一种语言,也叫超文本标记语言 。 1.1、查看网页的 HTML 代码 ①、显示网页源代码在网页任意地方点击鼠标右键,然后点击“显示网页源代码”。(Windows系统的电脑还可以使用快捷键ctrl+u来查看网页源代码) ②、检查windows:在网页的空白处点击右键,然后选择“检查”(快捷方式是ctrl+shift+i);mac:在网页的空白处点击右键,然后选择“检查”(快捷键 command + optio
python爬虫基础知识点整理
m0_59236602的博客
01-30 613
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。根据我的经验,要学习Python爬虫,我们要学习的共有以下几点:Python基础知识Python中urllib和urllib2的用法Python正则表达式Python爬虫框架ScrapyPython爬虫更高级的功能1.Python基础学习。
爬虫知识点
qq_64685349的博客
06-06 1567
爬虫简述 爬虫,又叫网络爬虫,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外还有一些名字,例如蚂蚁、自动索引、模拟程序或蠕虫。 ㈡爬虫优点 定向数据采集,数据定制化很强,数据针对性强。 ㈢爬虫分类 ⒈通用网络爬虫(广度) 优点:爬行范围和数量巨大,对于爬行页面的顺序要求相对较低,有较强的应用价值。 缺点:对于爬行速度和存储空间要求较高,要较长的时间才能刷新一次页面。 ⒉聚焦网络爬虫(深度) 优点:极大的节省了硬件和网络资源,保存的页面更新快,很好的满足一些特定人群对特定领
html层叠样式表,层叠样式表(CSS)及常见样式
weixin_39832628的博客
06-03 872
1.层叠样式表层叠样式表:Cascading Style Sheet :CSS主要用于标签的样式修饰:修饰内容、位置、颜色等等操作过程中,主要注意如下环节(1)css的基本语法(2)css代码的位置(3)css选择器(4)常见样式1.1CSS基本语法语法:样式名称:样式的值如:color:red 内容中文本的颜色:红色background-color:ora...
2024年Python爬虫面试题常考题万字长文.zip
03-15
python爬虫内容概要: 本文为爬虫技术初学者提供了一个全面的爬虫面试准备指南,包括爬虫基础知识、数据解析技巧、实战技巧、高级爬虫技术、网络请求与响应、数据与数据存储、异常处理和日志记录等方面的内容。...
python爬虫技术归纳总结
07-16
+python爬虫知识点总结 个人学习的历程和知识点的总结。其中包括内容比较丰富
机器学习-01-一篇万字长文深入了解机器学习必备准备工作:基础知识学习、机器学习工具选择和Python工具包运用
最新发布
05-03
机器学习-01-一篇万字长文深入了解机器学习必备准备工作:基础知识学习、机器学习工具选择和Python工具包运用
怎么样成为一个优秀的互联网BD(长文慎入)
02-26
我相信任何一个中国人都不难从商务拓展这几个字看出BD的含义和意思,拓展,就是在原有关系上加深关系,比如你把你女朋友稍微拓展下,没准就成老婆了,当然还有种可能,就是拓展成陌生人了,这个例子也就看出来BD的...
知识复杂问答综述(很棒的一篇综述)
09-11
长文沿用短文的叙述角度,将复杂知识图谱问答方法总结为基于语义解析 (Semantic Parsing-based; SP-based) 的方法和基于信息检索 (Information Retrival-based; IR-based) 的方法。从挑战和解决策略的角度讨论现有...
Python爬虫入门一之综述
aozhilu9748的博客
06-04 510
大家好哈,最近博主在学习Python,学习期间也遇到一些问题,获得了一些经验,在此将自己的学习系统地整理下来,如果大家有兴趣学习爬虫的话,可以将这些文章作为参考,也欢迎大家一共分享学习经验。 Python版本:2.7,Python 3请另寻其他博文。 首先爬虫是什么? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自...
scrapy爬虫整理的一些知识点
tingyun_say的博客
01-14 1037
本文记录自己在近期写scrapy项目中遇到的一些知识点,比较容易漏掉,也可能不常用,留作大家参考。一:xpath选取某一个节点的后邻兄弟节点//html代码片段如下 <li class="total_comment">123456</li> <li>hello world</li> <li> </li> <a href="www.example.com">中国好声音</a>使用foll
[775]小象学院--爬虫知识点总结
周小董
03-19 862
第一课 查找安装包 pip search lxml 设置 pip 源,配置 pip.conf ,自动设置源 # mkdir ~/.pip/ # vim ~/.pip/pip.conf [global] index-url=https://pypi.tuna.tsinghua.edu.cn/simple 也可以每次安装的时候制定 source # pip install –i https://p...
python爬虫篇:python对于html页面的解析(二)
热门推荐
lsr40的博客
10-29 3万+
我,菜鸡,有什么错误,还望大家批评指出!! 前言: 根据自己写的上一篇文章,我继续更第二部分的内容,详情请点击如下链接 【python爬虫篇:python连接postgresql(一):https://blog.csdn.net/lsr40/article/details/83311860 本文主要介绍了python通过bs4(BeautifulSoup)和xpath两种方法来获取爬到的...
Python爬虫常用爬虫工具汇总
彭世瑜的博客
10-12 2万+
按照网络爬虫的的思路: 页面下载页面解析数据存储 将工具按照以上分类说明,按照学习路线顺序给出参考文章 页面下载器 requests(必学) python爬虫入门requests模块 Python爬虫:requests基本使用 Python爬虫:使用requests下载大文件 Python爬虫:requests多进程爬取猫眼电影榜单 requests InsecureRequestWar...
如何做一个后台管理系统的页面设计,长文详细
09-08
做一个后台管理系统的页面设计需要考虑多个方面,包括用户体验、信息架构、可用性、可维护性等等。下面详细介绍一下如何设计一个高质量的后台管理系统页面。 1. 用户体验 在设计后台管理系统页面时,用户体验是非常重要的。这意味着页面需要易于使用,用户能够轻松找到他们需要的信息。以下是一些设计后台管理系统页面的建议: - 简洁明了的布局:页面应该有清晰的结构和组织,避免过于繁杂的页面布局。在设计页面时,应该尽量简化和组织页面元素,使用户更容易找到所需的信息。 - 直观的导航:设计一个清晰、直观的导航系统,可以帮助用户快速找到他们需要的功能和信息。导航菜单应该被放置在页面的顶部或侧边栏,并使用易于理解的标签和图标。 - 交互式元素:添加交互式元素,如下拉菜单、标签、按钮等,可以提高用户体验。这些元素可以让用户快速完成操作,并让页面更具吸引力。 - 明确的反馈:设计页面时,应该考虑用户在执行操作时需要明确的反馈。例如,在表单提交后显示成功或失败的消息。这可以帮助用户了解他们的操作是否成功。 2. 信息架构 一个良好的信息架构可以帮助用户快速找到他们需要的信息,并且可以让页面看起来更加整洁和有条理。以下是一些设计后台管理系统页面的建议: - 分类信息:对信息进行分类和分组,以帮助用户快速找到他们需要的信息。例如,可以将用户管理、内容管理等相关的功能组合在一起。 - 标签化:在页面上使用标签来帮助用户快速了解信息。例如,在列表中,可以使用标签来标识不同的项目状态。 - 搜索功能:添加搜索功能,可以帮助用户快速找到他们需要的信息。搜索框应该被放置在页面的顶部或侧边栏,并使用易于理解的搜索关键字和提示信息。 3. 可用性 可用性是指页面应该易于使用和理解。以下是一些设计后台管理系统页面的建议: - 明确的标签和标题:页面上的标签和标题应该易于理解和记忆。这可以帮助用户更快地找到他们需要的信息。 - 明确的指示:对用户进行明确的指示可以让他们更容易完成操作。例如,在表单中使用明确的标签和提示信息可以让用户更

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 毕业论文案例-LDA主题模型实现文本聚类 15926
  • 遗传算法python进阶理解+论文复现(纯干货,附前人总结引路) 12850
  • 51job(前程无忧官网)1万条招聘信息的爬取 7204
  • 遗传算法改进(IGA)+python代码实现 7192
  • 爬虫基础知识点汇总(html文件基础和4个常用库 超级详细长文预警) 4741

分类专栏

  • 机器学习算法与实例 5篇
  • 爬虫实战 1篇
  • 爬虫理论知识点 1篇

最新评论

  • 51job(前程无忧官网)1万条招聘信息的爬取

    Monody_u: 求源码,感谢!!!1448723800@qq.com

  • 毕业论文案例-LDA主题模型实现文本聚类

    不想秃头的夜猫子: 不是给出了网盘链接吗

  • 51job(前程无忧官网)1万条招聘信息的爬取

    2301_79004800: 发发原码吧 谢谢博主喽 1939665322@qq.com

  • 毕业论文案例-LDA主题模型实现文本聚类

    不想秃头的夜猫子: 哪一句报错呢?

  • 毕业论文案例-LDA主题模型实现文本聚类

    不想秃头的夜猫子: 已经修复了

大家在看

  • 定时器寄存器1 131
  • centos环境上:k8s 简单安装教程
  • 【毕设源码】基于PHP的宿舍报修小程序
  • 一篇文章带你认知什么是真正的“数据分析“
  • 每日算法

最新文章

  • GPT-SoVITS开源音色克隆框架的训练与调试
  • 动态规划(用空间换时间的算法)原理逻辑代码超详细!参考自《算法导论》
  • 遗传算法改进(IGA)+python代码实现
2024年1篇
2023年3篇
2022年3篇
2020年2篇

目录

目录

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司大庆网站开发价格中卫营销型网站建设通化推广网站价格兰州网站制作兰州SEO按效果付费多少钱伊春至尊标王价格金华网站推广报价榆林百度竞价包年推广报价和田网站推广系统报价襄樊网站优化按天扣费哪家好廊坊网站设计哪家好西安百搜标王哪家好潮州建站报价丽江网站排名优化推荐信阳网站开发价格襄阳关键词按天计费推荐肇庆营销网站来宾关键词按天计费坪地网站推广报价沈阳网站搭建公司中山网站建设公司本溪关键词按天扣费哪家好大丰网站搭建报价汕头网站搭建推荐哈尔滨优秀网站设计多少钱恩施百姓网标王推广公司怀化网站制作设计塘坑建网站价格昭通至尊标王公司福永企业网站建设多少钱歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化