Python进阶知识(1)—— 什么是爬虫?爬文档,爬图片,万物皆可爬,文末附模板

这篇具有很好参考价值的文章主要介绍了Python进阶知识(1)—— 什么是爬虫?爬文档,爬图片,万物皆可爬,文末附模板。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

A bold attempt is half success.
勇敢的尝试是成功的一半。

Python进阶知识(1)—— 什么是爬虫?爬文档,爬图片,万物皆可爬,文末附模板

01 | 🍒 什么是 P y t h o n 爬虫? \color{red}{什么是Python爬虫?} 什么是Python爬虫?🍒

Python进阶知识(1)—— 什么是爬虫?爬文档,爬图片,万物皆可爬,文末附模板

Python爬虫是一种利用编程语言Python从互联网上自动获取大量数据的技术。通常采用模拟网页浏览器行为,通过访问URL、解析HTML页面并提取数据等操作,实现对网络信息资源的信息抓取和处理,生成所需的数据集合。

调用Python库中的HTTP库或框架,如Requests或Scrapy,向目标网站发出请求,从而获得网站上的数据,并将它们解析成Python可处理的格式(Python对象)。待解析完毕后,程序可以对数据进行保存、分析、加工及可视化展示等相关处理。

Python爬虫主要包括以下步骤:

  1. 发起网络请求,下载网页内容 \color{red}{发起网络请求,下载网页内容} 发起网络请求,下载网页内容:使用 Python 库中的 HTTP 库或框架,如urllib或requests等,向目标网站发出符合HTTP协议规范的请求,获取需要爬取的网页内容。

  2. 解析 H T M L 页面 \color{orange}{解析 HTML 页面} 解析HTML页面:根据需要爬取的内容所在的 HTML 元素,使用 HTML 解析器,如BeautifulSoup或pyquery,来解析网页的结构和内容。

  3. 提取数据 \color{green}{提取数据} 提取数据:对解析后的 HTML 文档进行筛选、过滤并提取有价值的数据,并将其存储到本地文件或数据库中。

  4. 数据预处理 \color{blue}{数据预处理} 数据预处理:对爬取回来的数据进行格式转换、去除异常数据并归纳整理,方便后续的挖掘和应用。

  5. 数据可视化或数据挖掘 \color{cyan}{数据可视化或数据挖掘} 数据可视化或数据挖掘:根据需求,使用Python库中的可视化工具,如Matplotlib和Seaborn等库,或数据挖掘工具,如NumPy和pandas等库,对预处理后的数据进行分析处理并展示出来。

需要注意的是,爬虫在网络上获取信息时需要遵守相关法律法规,并尊重网站的版权及数据安全等相关问题。同时,在爬取过程中还需要注意防范反扒机制和反爬虫策略产生的限制。

当涉及到网络数据采集时,Python是一种非常有用的编程语言。该语言通过其各种库和框架支持爬虫脚本的编写。以下是关于Python爬虫的基本知识:

02 | 🍊 怎么发起网络请求? \color{orange}{怎么发起网络请求?} 怎么发起网络请求?🍊

Python进阶知识(1)—— 什么是爬虫?爬文档,爬图片,万物皆可爬,文末附模板

Python爬虫可以利用内置的 urllib 库或第三方库 requests 发起网络请求,其中使用 requests 库更加方便,因此下文主要介绍该库的用法。

requests 是一个易于使用且功能强大的第三方 HTTP 库,它包含了各种各样的函数和参数,使得网页抓取变得更为简单。发起 HTTP 请求时,我们可以通过发送 GET、POST等不同方法的请求,同时还可以设置请求头、请求参数、代理设置、cookies管理等相关信息。

以下是一个发起GET请求的示例代码:

import requests

url = 'https://www.baidu.com/'
response = requests.get(url)
print(response.status_code)  # 打印响应状态码
if response.status_code == 200:
    print(response.text)  # 打印网页HTML源代码

通过 requests.get()函数来实现对百度首页的请求,将返回的响应结果保存在response变量中。调用 status_code() 方法获取响应状态码,如果状态码为200则表示请求成功,并调用 text 属性获取网页HTML源代码,最后将网页代码输出到控制台上。

注意:requests 在访问时可能会出现超时、请求异常等情况,需要针对性进行异常处理,并添加报错信息以确保程序安全稳定地运行。

除了发送GET请求,我们还可以通过 requests.post() 实现POST请求,只需在传递URL参数后,再设置相关的参数,如请求头、请求数据等,即可完成POST请求。以下是一个示例代码:

import requests

url = 'https://www.xxx.com/'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
data = {'username': 'xxx', 'pw': '123456'}
response = requests.post(url, headers=headers, data=data)
print(response.json())  # 打印JSON格式响应数据

该示例代码利用 requests.post() 方法向一个URL发起POST请求,并通过设置请求头及请求数据,模拟用户登录行为。调用 json() 属性解析返回的JSON格式数据,最终输出结果到控制台。

需要注意的是,在实际使用中,我们可以将请求头、请求参数等内容进行封装,使程序更加简单易用同时减少重复操作,提高代码复用率。

03 | 🍋 怎么解析 H T M L 页面 \color{yellow}{怎么解析HTML页面} 怎么解析HTML页面🍋

Python进阶知识(1)—— 什么是爬虫?爬文档,爬图片,万物皆可爬,文末附模板

在Python爬虫中,我们可以使用第三方库如Beautiful Soup、pyquery等来解析HTML页面,并提取网页所需的数据。下面以Beautiful Soup为例,介绍解析HTML页面的基本流程。

首先,需要安装Beautiful Soup库和相关依赖:

pip install BeautifulSoup4

然后,导入库文件并使用requests库发起请求获取目标网页的源码:

import requests
from bs4 import BeautifulSoup

url = 'http://www.example.com'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')

其中response保存了请求的响应内容,soup是一个BeautifulSoup对象。当然,前提条件是要保证requests成功返回了网页源码。

接着,我们就可以遍历页面上的DOM节点并提取所需要的数据。常用的两种方法是findfind_all。如果我们想查找页面上的某个标签(如h1)并显示其内容,则可以将以下代码添加到上述示例中:

title = soup.find('h1').text
print(title)

这里的find()相当于在页面节点树上递归查找第一个符合条件的元素。

如果我们想要查找所有满足条件的HTML标签,在循环处理标签时,可以采用find_all()匹配多个标签,如:

all_links = soup.find_all('a')
for link in all_links:
   print(link.get('href'))

其中,link.get("href")获取a标签的href属性。

在解析完HTML页面之后,我们可以将提取到的内容存储到文件、数据库或者内存中进行后续处理。需要注意的是,在遍历DOM树时,要注意验证节点是否为空,以及是否符合预期,方可保证代码稳定性和可靠性。另外,如果想要提取特定的CSS选择器或XPath表达式中的信息,则可以使用其他Python库(如lxml)实现。

04 | 🥒 怎么提取数据? \color{green}{怎么提取数据?} 怎么提取数据?🥒

Python进阶知识(1)—— 什么是爬虫?爬文档,爬图片,万物皆可爬,文末附模板

在Python爬虫中,数据提取是一个非常重要的过程。通常来说,我们从HTML页面中提取有用的信息,可以采用以下几种方式:

  1. 使用正则表达式匹配

  2. 使用XPath或CSS选择器解析

  3. 使用Python内置的字符串处理函数解析

其中,使用正则表达式的方法需要较高的技能和经验,并且容易出现错误,后面再进行正则表达式的学习。这里使用XPath或CSS选择器解析更加直观和简单,这里以Beautiful Soup为例来介绍如何利用XPath或CSS选择器提取数据。

在 Beautiful Soup 中,可以通过 findfind_all 方法查找匹配某个 CSS 选择器或者 XPath 表达式的元素。使用 CSS 选择器时,将选择器作为 find 或者 find_all 的参数即可:

soup.find_all('p a') # 查找所有 <p> 元素中包含 <a> 元素的数据

使用 XPath 表达式时,在执行 find、find_all 或 select 时传递参数 ‘xpath’ 即可:

soup.find_all(xpath='//p/a') # 查找所有 <p> 元素中的 <a> 元素

和直接使用 CSS 选择器相比,XPath 更加强大,但也更加复杂,需要对语法有一定的了解。

拿到匹配的元素后,可以通过 BeautifulSoup 对象的 text 属性获取该元素的文本值,也可以通过 attrs 属性获取其他属性值,例如:

for link in soup.find_all('a'):
    print(link['href'], link.text) # 输出 href 属性和 text 内容

另外,对于某些比较特殊的数据提取需求,我们可以进一步使用Python内置的字符串处理函数,如 split()strip()等方法对文本进行分割和处理。

在爬虫过程中,提取到的数据可能需要进一步进行整理,清洗和转换等操作,在进行这些操作时,要注意数据的类型和格式,以避免错误出现。

05 | 🧙‍♂️ 怎么进行数据存储 \color{blue}{怎么进行数据存储} 怎么进行数据存储🧙‍♂️

Python进阶知识(1)—— 什么是爬虫?爬文档,爬图片,万物皆可爬,文末附模板

Python脚本通常需要直接或间接地保存数据以供后续使用。常见的数据存储选项包括文件、数据库,以及云存储等等。例如,以下代码将使用Pandas库将搜索结果保存到CSV文件中:

from bs4 import BeautifulSoup
import requests
import pandas as pd

response = requests.get('https://www.baidu.com/s?wd=python')
soup = BeautifulSoup(response.content, 'html.parser')

results = []
for result in soup.find_all('h3', {'class': 't'}):
    results.append(result.text)

df = pd.DataFrame({'results': results})
df.to_csv('search_results.csv', index=False)

该代码从百度搜索“Python”并将搜索结果解析为HTML。然后,它使用Pandas库将数据转换为数据框,并将其保存到名为search_results.csv的CSV文件中。

总之,在Python爬虫方面,请求库和解析器是很重要的工具,因为它们可以帮助Python脚本与Web应用程序交互,并从HTML页面中提取所需的数据。同时,不同的数据存储选项也可以提供更多的选择来备份或分享网络采集数据。

06 | 🎫 怎么进行数据预处理? \color{cyan}{怎么进行数据预处理?} 怎么进行数据预处理?🎫

Python进阶知识(1)—— 什么是爬虫?爬文档,爬图片,万物皆可爬,文末附模板

在数据爬取过程中,我们获取到的数据可能存在多种不规范、重复和缺失等问题,因此需要对数据进行预处理,以提高后续分析和应用的准确性和可靠性。以下是一些常用的数据预处理方法:

  1. 数据清洗 \color{red}{数据清洗} 数据清洗:清除数据中的异常值和噪声,例如空值、重复值、特殊符号和无效字符等。可以使用Pandas库中的dropna()、drop_duplicates()等方法来实现。

  2. 数据结构转换 \color{orange}{数据结构转换} 数据结构转换:将数据格式化为适合在其他系统上使用的数据结构,例如将数据从CSV格式转换为JSON格式。

  3. 数据归一化 \color{yellow}{数据归一化} 数据归一化:将数据统一处理,消除数据之间的差异性,例如将统计指标按照某种方式进行标准化,以保证其具有可比性。

  4. 数据规范化 \color{green}{数据规范化} 数据规范化:规范化数据的单位、格式和描述等信息,使其符合特定的标准。

  5. 特征选择 \color{blue}{特征选择} 特征选择:根据具体应用场景选择合适的特征变量,并去掉冗余变量,以降低模型的复杂度。

  6. 特征提取 \color{cyan}{特征提取} 特征提取:利用数据挖掘和机器学习等技术,对数据进行降维或者抽象处理,以提取出最具代表性的特征变量。

  7. 数据分布统计 \color{purple}{ 数据分布统计} 数据分布统计:通过对数据进行统计学分析来了解数据的分布情况、结构特征等。可以使用Python内置的统计函数,如mean()、std()、median()等来实现。

在实际操作中,我们通常需要多种方法的组合才能达到最佳的预处理效果。在选择预处理方法时,要根据实际场景和数据类型进行灵活调整和优化,以提高数据质量和后续应用价值。

07 | 🍇 怎么进行数据可视化? \color{purple}{怎么进行数据可视化?} 怎么进行数据可视化?🍇

Python进阶知识(1)—— 什么是爬虫?爬文档,爬图片,万物皆可爬,文末附模板

Python作为一种高级编程语言,可以方便地对爬取到的数据进行可视化和数据挖掘,以帮助我们更好地理解数据、分析数据和展示数据。以下是一些常用的数据可视化和数据挖掘方法:

  1. 数据可视化 \color{blue}{数据可视化} 数据可视化

    在进行数据可视化时,Python中最常用的库是Matplotlib和Seaborn。这些库可以绘制各种类型的图表和图形,如线图、柱状图、饼图、散点图等。此外,还可以结合Pandas,使用它的DataFrame来处理和可视化数据。

  2. 数据挖掘 \color{cyan}{数据挖掘} 数据挖掘

    Python中最常用的数据挖掘工具是Scikit-learn和NumPy。Scikit-learn基于科学计算库NumPy和SciPy,提供了大量的算法和技术,如聚类、分类、回归、特征选择、降维等。同时,Scikit-learn也支持可视化工具,如数据集的分布和预测情况的可视化。除了Scikit-learn,还有其他开源的Python工具,例如NLTK(自然语言处理),Gensim(主题建模)等。

  3. W e b 应用程序 \color{PURPLE}{Web应用程序} Web应用程序

    Python也是一个非常适合构建Web应用的语言。可以使用Flask或Django等框架,将数据挖掘和数据可视化功能结合起来,搭建出一款完整的数据分析平台。在这种平台上,可以将数据保存到数据库中,通过Web UI进行处理和展示。

总体来说,Python提供了丰富的工具和库,可以让我们轻松实现对爬虫数据的可视化和数据挖掘。但在实际应用中要注意,选择合适的工具和方法,以及合理处理和清洗数据非常重要,才能得到准确、有用且易于理解的结果。

08 | 🌸 爬虫模板 \color{pink}{爬虫模板} 爬虫模板🌸

Python进阶知识(1)—— 什么是爬虫?爬文档,爬图片,万物皆可爬,文末附模板

  1. 使用Python爬取网站图片:

    1. 使用requests库获取网页内容

      import requests
      
      url = "https://www.example.com"
      response = requests.get(url)
      

      可以通过以上代码获取URL对应的网页内容,存储在变量‘response’中。

    2. 使用BeautifulSoup解析HTML文档

      from bs4 import BeautifulSoup
      
      soup = BeautifulSoup(response.text, 'html.parser')
      

      使用BeautifulSoup库将获取到的HTML文档进行解析,并转化成内部的数据结构,方便后续的信息提取。

    3. 获取图片标签和链接

      img_list = soup.find_all('img') # 查找所有<img>标签
      for img in img_list:
      	url = img['src']   # 获取图片链接地址
      	filename = url.split('/')[-1]  # 获取图片名称
      	response_img = requests.get(url)
      	with open(filename, 'wb') as f:
      		f.write(response_img.content) # 把图片写入文件
      

      在第三步中,我们遍历了所有的‘img’标签,提取出了其中的图片链接地址,并根据链接地址中最后一个斜杠后的内容,提取了图片的本地文件名。然后,我们使用requests库再次向图片链接地址发送请求,获得二进制的图片内容,最后将其保存到本地文件中,以实现图片下载的功能。

    需要注意的是,在爬取过程中,存在一些图片链接地址是相对路径的情况,此时需要将其转换为绝对路径。在某些场景下,还可能需要登录网站或者模拟登录才能够获取到网页的内容和相关的图片链接地址。除此之外,在使用爬虫进行图片下载时,还应该遵从网络道德规范和法律法规,不要违反任何网站的协议和规定。

  2. 爬取小说

    Python可以使用requests和beautifulsoup4库来实现小说网站的爬取,并将获取到的内容保存到本地txt文件中。下面是一个简单的Python爬虫示例,用于从指定网站上获取小说内容:

    import requests
    from bs4 import BeautifulSoup
    
    url = 'https://www.example.com/novel/1234'
    response = requests.get(url)   # 发送请求
    
    if response.status_code == 200:  # 判断是否成功响应
    	soup = BeautifulSoup(response.content, 'html.parser')
    	title = soup.h1.text.strip()  # 获取小说名称
    	content = soup.find(id='content')  # 查找小说内容
    	content = content.text.replace('\r\n\r\n', '\n').strip()  # 清理字符串的空白和换行符
    
    	with open(title + '.txt', 'w', encoding='utf-8') as file:
        	file.write(content)
    
    	print('小说{}已经存储在本地文件{}中'.format(title, title+'.txt'))
    else:
    	print('小说获取失败')
    

    在以上代码中,我们首先使用requests库向目标网站发送http请求,获得小说内容所对应的HTML文档。然后,使用BeautifulSoup库进行页面解析,查找小说的标题和内容,并清除多余空格和换行符。
    最后,使用Python内置的打开文件操作函数,创建一个以小说名命名的TXT文件,并将小说内容写入文件中,实现了小说信息的本地存储。如果程序运行正常,则在终端中输出“小说已经存储在本地文件中”的提示,否则输出“小说获取失败”的错误信息。

    需要注意的是,在爬取小说等文本内容时,应该依法依规,遵循相关法规和道德规范,不要通过非法或不当手段进行文本采集和公开传播。同时,我们还应该尽可能考虑到对被爬取网站的服务器负载和安全的影响,以免造成恶劣影响和法律后果。文章来源地址https://www.toymoban.com/news/detail-441456.html

到了这里,关于Python进阶知识(1)—— 什么是爬虫?爬文档,爬图片,万物皆可爬,文末附模板的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python基础知识进阶之数据爬虫

           爬虫是指利用网络抓取模块对某个网站或者某个应用中有价值的信息进行提取。还可以模拟用户在浏览器或者APP应用上的操作行为,实现程序自动化。简单来说就是我们把互联网有价值的信息都比喻成大的蜘蛛网,而各个节点就是存放的数据,而蜘蛛网的上蜘蛛比喻

    2024年02月09日
    浏览(63)
  • 万物皆可“云” 从杭州云栖大会看数智生活的未来

    10月31日,2023云栖大会在杭州云栖小镇开幕。今年云栖大会现场布设4万平米科技展,涵盖算力、“人工智能+”、产业创新三大主题。 几乎每一年,云栖大会都会有新鲜元素加入。 云栖大会前身,是阿里云大会,阿里在2009年成立了阿里云,也是这一年有了网站开发者论坛。从

    2024年02月05日
    浏览(40)
  • 万物皆可截图:SwiftUI 中任意视图(包括List和ScrollView)截图的通用实现

    在使用 SwiftUI 开发的过程中,有时我们希望能够对特定视图进行截图: 如上图所示: 我们实现了 SwiftUI 5.0(iOS 17)中对任意视图(List、gif动画、ScrollView 等等)进行截图的功能。 从目前来说,大家在 SwiftUI 中截图会面临一些问题: 官方的 ImageRenderer 类兼容性差; 某些截图

    2024年02月16日
    浏览(43)
  • 后悔没早学这份Python神级文档!2023最新入门到进阶核心知识点学习文档!

    如今学 Python 的程序员越来越多,甚至不少人会把 Python 当作第一语言来学习。不过尽管 Python 功能强大上手轻松,但并不代表它的学习曲线不陡峭,得来全不费工夫。 当推开 Python 的大门,你会发现 Python 入门简单但精通很难。看似语法记得滚瓜烂熟,但一进入实际项目,就

    2024年02月06日
    浏览(49)
  • 万物皆可长按:SwiftUI 5.0(iOS 17)极简原生实现任意视图长按惯性加速功能

    在 SwiftUI 中与视图进行各种花样交互是 App 具有良好体验不可或缺的一环。 比如,我们希望按钮能在用户长按后产生惯性加速度行为,并想把这一行为扩展到 SwiftUI 中的任意视图中去。 以前,要想实现任意视图的长按加速,我们需要自己写额外代码,费时又费力。 不过,从

    2024年02月13日
    浏览(42)
  • Python进阶知识(2)—— 什么是GUI编程?一起来学习用Python,Tkinter“做画”吧

    All things are difficult before they are easy. 凡事必先难后易。 GUI是Graphical User Interface(图形用户界面)的缩写 。它是指通过图形化的方式,为人们提供更加友好、直观的用户界面,使得用户可以通过鼠标和键盘等外设更加轻松、快捷地操作计算机。在GUI界面中,计算机会呈现出各种

    2024年02月05日
    浏览(45)
  • 【爬虫开发】爬虫从0到1全知识md笔记第1篇:爬虫概述【附代码文档】

    爬虫开发从0到1全知识教程完整教程(附代码资料)主要内容讲述:爬虫概述。selenium的其它使用方法。Selenium课程概要。常见的反爬手段和解决思路。验证码处理。chrome浏览器使用方法介绍。JS的解析。Mongodb的介绍和安装,小结。mongodb的简单使用,小结。Mongodb的的增删改查,小

    2024年03月14日
    浏览(38)
  • 【爬虫开发】爬虫从0到1全知识md笔记第4篇:Selenium课程概要,selenium的介绍【附代码文档】

    爬虫开发从0到1全知识教程完整教程(附代码资料)主要内容讲述:爬虫课程概要,爬虫基础爬虫概述, ,http协议复习。requests模块,requests模块1. requests模块介绍,2. response响应对象,3. requests模块发送请求,4. requests模块发送post请求,5. 利用requests.session进行状态保持。数据提取概要

    2024年04月15日
    浏览(68)
  • 爬虫进阶-反爬破解1(反爬技术简介、HTTP网络基础知识、搭建代理服务)

    目录 一、反爬技术简介 二、HTTP网络基础知识 三、搭建代理服务 (一)破解Web端反爬技术 1.常见的反爬策略方向:同一时间的请求数量、请求的身份信息、浏览器和爬虫的区别 2.浏览器和爬虫的不同:异步数据加载、前端的渲染技术、逆向分析JS函数代码、浏览器调度和调试

    2024年02月10日
    浏览(99)
  • 【爬虫开发】爬虫从0到1全知识md笔记第5篇:Selenium课程概要,selenium的其它使用方法【附代码文档】

    爬虫开发从0到1全知识教程完整教程(附代码资料)主要内容讲述:爬虫课程概要,爬虫基础爬虫概述, ,http协议复习。requests模块,requests模块1. requests模块介绍,2. response响应对象,3. requests模块发送请求,4. requests模块发送post请求,5. 利用requests.session进行状态保持。数据提取概要

    2024年04月16日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包