十分钟带你搞懂Python那啥

简介: 十分钟带你搞懂Python那啥

Python爬虫的用处就不需要我多说了吧,今天就来带大家十分钟快速学会Python是如何爬取网页信息的,当然大家在爬取目标网页内容之前一定要遵守该网页的爬虫规则,以免带来不必要的麻烦,因而本次的示例所爬取的网页也是自己的本地网站,但是效果都应该是差不多的,下面我们开始。

1 总体步骤

(1)确定想要进行爬虫的站点,确认合法性(网站的根目录域名后加上/robots.txt可查看)

(2)获取该站点网页的HTML内容

(3)解析站点HTML内容

(4)对解析后的HTML内容进行有规律的清洗和处理

(5)验证爬虫结果

2 具体步骤示例

目标网站:http://localhost:8080

首先我们需要查询下目标网站的robots.txt文件(http://localhost:8080/robots.txt)

这两行的意思是对任何类型的爬虫(机器人)有效,允许爬取/目录下的内容,一般robots.txt都是由零个或多个User-agent、Allow、Disallow构成的,具体的规则大家可以利用搜索引擎进行补充学习(例如:(https://baike.baidu.com/item/robots%E5%8D%8F%E8%AE%AE/2483797?fromtitle=robots.txt&fromid=9518761&fr=aladdin))

接下来我们访问目标网站http://localhost:8080,查看其HTML代码

具体的HTML代码:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>Hello</title>
</head>
<body>
<h1>My WebSite</h1>
<table>
  <tbody>
    <tr>
        <td>A</td>
        <td>B</td>
        <td>C</td>
        <td>D</td>
    </tr>
    <tr>
        <td>E</td>
        <td>F</td>
        <td>G</td>
        <td>H</td>
    </tr>
  </tbody>
  </table>
<ul>
    <li><img src="./images/1.png"></li>
    <li><img src="./images/2.png"></li>
    <li><img src="./images/3.png"></li>
    <li><img src="./images/4.png"></li>
    <li><img src="./images/5.png"></li>
    <li><img src="./images/6.png"></li>
</ul>
</body>
</html>

我们的爬虫目标:

  • 下载该网页的全部图片
  • 获取table下tb的全部内容

Python代码:

from lxml import etree
import requests as requests
# 爬取的目标网站的URL
url = 'http://localhost:8080'
# 获取目标网站的HTML代码
read = requests.get(url)
context = read.text
# 将目标网站HTML代码做转化
resp = etree.HTML(context)
tree = resp.xpath('/html/body/ul/li[*]/img/@src')
tree1 = resp.xpath('/html/body/table/tbody/tr[*]/td/text()')
# 做具体的操作
# 任务1 
for item in tree:
    img_name = str(item).split("/")[2]
    img_url = url + "/images/" + img_name
    save_url = "C:/Desktop/img/" + img_name
    # 保存图片到本地
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36'
    }
    r = requests.get(img_url, headers=headers)
    f = open(save_url, 'wb')
    f.write(r.content)
    print(img_name + "  已下载...")
    f.close()
print("---任务1完成---")
# 任务2
for item in tree1:
    print(item)
print("---任务2完成---")

爬取结果:文件成功保存到本地,控制台输出如下

答疑:

Q1:爬虫相关插件的依赖如何下载?

A1:本次爬虫示例主要使用了两个插件分别为requests和lxml,下载方式:

  • pip install requests
  • pip install lxml

Q2:resp.xpath括号里面的内容如何确定?

A2:XPath的获取方式(Chrome浏览器)

Q3:headers有什么作用?如何确定?

A3:headers是解决requests请求反爬的方法之一,相当于我们进去这个网页的服务器本身,假装自己本身在爬取数据。获取方式:

3 总结

好了,全文到这里就接近尾声了,不知道大家是否可以在十分钟内学会,当然前提是懂一些Python的语法哈。再次提醒大家一个很重要的前提就是一定要在合法合规的前提下爬取目标网站,保护个人隐私,这也是互联网行业每一名工程师的职业准则。

其次,本篇文章为了简单的演示导致了功能也比较的简单,真正的爬虫可能要比这复杂的多,学习的方式和路径也有很多种,这就需要大家自己择优而取咯~

over

相关文章
|
5月前
|
索引 Python
十分钟学习Python异常处理
在编程过程中,错误和异常是不可避免的。Python提供了强大的异常处理机制,帮助我们捕获和处理运行时错误,使程序更加健壮和可靠。本文将带你在十分钟内快速掌握Python的异常处理基础知识。
|
5月前
|
存储 人工智能 数据挖掘
十分钟学习Python基础知识
Python是一种高效、易学且功能强大的编程语言,广泛应用于数据分析、人工智能、Web开发等领域。如果你是编程新手,想要快速入门Python,那么这篇文章将是你的最佳选择。我将在十分钟内带你了解Python的基础知识。
|
7月前
|
JavaScript 前端开发 Python
十分钟,Python 带你看遍世界足球俱乐部沉浮
十分钟,Python 带你看遍世界足球俱乐部沉浮
|
监控 Shell 持续交付
强大的 Python 任务自动化工具!invoke 十分钟入门指南
invoke 是从著名的远程部署工具 Fabric 中分离出来的,它与 paramiko 一起是 Fabric 的两大最核心的基础组件。
551 0
|
数据采集 C++ Python
Python十分钟制作属于你自己的个性logo
词云的使用相信大家已经不陌生了,使用很简单,直接调用wordcloud包就可以了。它的主要功能是根据文本词汇和词汇频率生成图片,从中可以直观的看出各个词汇所占比重。最近正好想做一个人的logo,于是乎决定使用词云来制作完成。
Python十分钟制作属于你自己的个性logo
|
Python
转载:Python十分钟入门
    Python十分钟入门:http://python.jobbole.com/23425/
899 0
|
18天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
17天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
5天前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
98 80