首页 > 编程语言 >「Python爬虫」最细致的讲解Python爬虫之Python爬虫入门(一)

「Python爬虫」最细致的讲解Python爬虫之Python爬虫入门(一)

时间:2024-06-22 10:58:38浏览次数:26  
标签:lxml 网页 入门 Python 爬虫 html requests

一、认识爬虫
1.1、什么是爬虫?
爬虫:一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息。
1.2、Python爬虫架构
调度器:相当于一台电脑的CPU,主要负责调度URL管理器、下载器、解析器之间的协调工作。
URL管理器:包括待爬取的URL地址和已爬取的URL地址,防止重复抓取URL和循环抓取URL,实现URL管理器主要用三种方式,通过内存、数据库、缓存数据库来实现。
网页下载器:通过传入一个URL地址来下载网页,将网页转换成一个字符串,网页下载器有urllib2(Python官方基础模块)包括需要登录、代理、和cookie,requests(第三方包)
网页解析器:将一个网页字符串进行解析,可以按照我们的要求来提取出我们有用的信息,也可以根据DOM树的解析方式来解析。网页解析器有正则表达式(直观,将网页转成字符串通过模糊匹配的方式来提取有价值的信息,当文档比较复杂的时候,该方法提取数据的时候就会非常的困难)、html.parser(Python自带的)、beautifulsoup(第三方插件,可以使用Python自带的html.parser进行解析,也可以使用lxml进行解析,相对于其他几种来说要强大一些)、lxml(第三方插件,可以解析 xml 和 HTML),html.parser 和 beautifulsoup 以及 lxml 都是以 DOM 树的方式进行解析的。
应用程序:就是从网页中提取的有用数据组成的一个应用。

一、爬虫准备
2.1.1、爬虫类型
小爬:各种库来爬
中爬:框架
大爬:搜索引擎
2.1.2、目的
解决数据来源的问题
做行业分析
完成自动化操作
做搜索引擎
2.1.3、目标类型
新闻/博客/微博
图片,新闻,评论
电影视频
视频,评论
音乐
音频,评论
三、开始爬虫
本章为爬虫入门,所以我们只需要安装几个Python库即可,如下:
requests | pip install requests
bs4 | pip install bs4
lxml | pip install lxml
发送请求
我们每天访问百度,其实就是一次请求,这个requests作用其实就是使用代码模拟我们人类给网站发送了一次请求。 首先我们需要导入requests库 如下:

import requests # 导入requests库
导入之后我们就可以使用requests库中的方法了,例如我们需要获取我csdn某一篇文章。

r = requests.get('https://www.jianshu.com')
现在,我们有一个名字为:r的Response响应对象,也就是我们访问网站,网站肯定会给我们数据。一些参数如下:

r.status_code # 查看访问状态码 200为ok 是成功的
200

然后获取网页源码

r.text # 就是整个网页的html代码
有了html源码一般使用正则匹配数据,但是太麻烦,我们选择一个更简单的可以解析html的python库
就是

from bs4 import BeautifulSoup
来个案例 查找所有关于title标签

!/usr/bin/env python

-- coding:utf-8 --

from bs4 import BeautifulSoup
html = '网页源码'
soup = BeautifulSoup(html, 'lxml')
title = soup.find_all('title')
print(title)

[<title>The Dormouse's story</title>]
其中有个lxml 这个是lxml HTML 解析器 上面已经安装到了
说几个BeautifulSoup比较重要的函数

!/usr/bin/env python

-- coding:utf-8 --

from bs4 import BeautifulSoup
html = '网页源码'
soup = BeautifulSoup(html, 'lxml')
soup.find_all('a') # 获取整个网页所有a标签
soup.find_all('p') # 获取整个网页所有p标签
soup.find('p') # 获取网页第一个p标签
soup.select('#stro p') # 这个是按照css选择器获取元素的 和css几乎相同
「Python爬虫」最细致的讲解Python爬虫之Python爬虫入门(一)先到这里


标签:lxml,网页,入门,Python,爬虫,html,requests
From: https://blog.csdn.net/2401_85900557/article/details/139878996

相关文章

  • Python进大厂比赛中的特征工程与模型训练
    Python进大厂比赛中的特征工程与模型训练一、引言二、技术概述特征工程模型训练三、技术细节特征工程模型训练四、实战应用五、优化与改进特征工程模型训练六、常见问题特征工程模型训练七、总结与展望一、引言Python作为数据科学界的明星语言,其在机器学习、数......
  • Java爬虫入门(2) Jsoup使用
    Jsoup介绍:    一款Java对html的解析工具。Jsoup的基础使用:    导入Maven依赖:                <dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.11.3</version></dependency>......
  • 超越datetime:Arrow,Python中的日期时间管理大师
    介绍Arrow是一个Python库,它提供了一种合理且对人类友好的方法来创建、操作、格式化和转换日期、时间和时间戳。它实现了对datetime类型的更新,填补了功能上的空白,提供了一个智能的模块API,支持许多常见的创建场景。简单来说,它可以帮助您使用更少的导入和更少的代码来处理日期和时间......
  • python期末考试(个人理解)主要内容为函数和文件与数据格式化(三)持续更新
    如有错误,敬请更新!!!函数的概述:将一串代码打包成一个包,为了以后方便使用函数的定义:使用关键字(保留字)def来定义defmy_function():  #函数体  print("Hello,World!")函数的调用#定义一个函数,它接受两个参数并返回它们的和defadd_numbers(a,b):  result=......
  • 数据分析第十一讲:pandas应用入门(六)
    pandas应用入门(六)我们再来看看Index类型,它为Series和DataFrame对象提供了索引服务,有了索引我们就可以排序数据(sort_index方法)、对齐数据(在运算和合并数据时非常重要)并实现对数据的快速检索(索引运算)。由于DataFrame类型表示的是二维数据,所以它的行和列都有索引,分别是index和......
  • 数据分析第九讲:pandas 应用入门(四)
    pandas应用入门(四)数据透视经过前面的学习,我们已经将数据准备就绪而且变成了我们想要的样子,接下来就是最为重要的数据透视阶段了。当我们拿到一大堆数据的时候,如何从数据中迅速的解读出有价值的信息,把繁杂的数据变成容易解读的统计图表并再此基础上产生业务洞察,这就是数据......
  • 运筹学练习Python精解——整数规划
    练习1一汽车厂生产小、中、大三种类型的汽车,已知各类型每辆车对钢材、劳动时间的需求,利润以及每月工厂钢材、劳动时间的现有量如下表所示,试制定月生产计划,使工厂的利润最大。进一步讨论:由于各种条件限制,如果生产某一类型汽车,则至少要生产80辆,那么最优的生产计划应作何改变。......
  • 【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(三)-shell语法
    主要通过讲解shell中的一些基本语法,可以当作日常的笔记来进行查询和记忆。文章目录前言一、shell二、shell语法1.运行方式2.注释3.变量4.默认变量 5.数组 总结前言主要通过讲解shell中的一些基本语法,可以当作日常的笔记来进行查询和记忆。提示:以下是本篇......
  • python笔记
    pythonflatten()flatten()方法用于将多维数组转换为一维数组:#创建一个二维数组array_2d=np.array([[1,2,3],[4,5,6]])#使用flatten()方法将其展平为一维数组array_1d=array_2d.flatten()print(array_1d)输出结果是:[1,2,3,4,5,6]是X.flatten()[:......
  • python---计算器界面以及功能
    代码:importtkinterastkfromtkinterimport*root=Tk()root.title("calculate")result_num=tk.StringVar()result_num.set('')#在Tkinter中,StringVar是一个特殊的变量类,它用于与Tkinter的某些部件(如标签Label、条目Entry等)的文本属性进行双向绑定。        ......