首页 > 编程语言 >十分钟带你搞懂Python获取网页信息

十分钟带你搞懂Python获取网页信息

时间:2022-10-23 22:06:13浏览次数:40  
标签:网页 img Python 爬虫 url HTML 搞懂 requests

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>
My WebSite
<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

标签:网页,img,Python,爬虫,url,HTML,搞懂,requests
From: https://blog.51cto.com/u_15654567/5787603

相关文章

  • python学习第四周总结
    异常常见类型异常处理语法结构异常补充处理异常处理实战应用生成器对象自定义生成器range()功能yield冷门用法生成器表达式模块简介模块的分......
  • python控制台颜色输出设置
    python控制台颜色输出设置控制台输出内容的颜色有前景色与背景色控制台的展示效果有限,并不能像前端一样炫酷,只能做一些简单的设置原理python终端的字符颜色是用转义序......
  • 写给小朋友的Python课
    目录 基本常识什么是Python?python是众多编程语言中的一种。为什么python会在这个时代流行?python简单、易学、表示方式更像人类的表示方式、符合人类的思维方式;另外,它......
  • 异常处理与python内置模块
    异常常见类型syntaxError语法错误NameError当你引用了变量、模块、类、函数或代码中没有定义的其他名称时,将引发NameErrorIndexError当你尝试从序列(如列表或......
  • Python最速下降法实例
    最速下降法的实现需要通过符号计算。首先笔算一步如下,然后通过程序验证: python程序如下,需要pipinstallsympy:importnumpyasnpfromsympyimport*importmath......
  • ParserWarning: Falling back to the 'python' engine because the 'c' engine does n
    Python3.9.10,Window64bit   警告:ParserWarning:Fallingbacktothe'python'enginebecausethe'c'enginedoesnotsupportregexseparators(separators......
  • Python实验报告(第7周)
    实验7:面向对象程序设计一、实验目的和要求1、了解面向对象的基本概念(对象、类、构造方法);2、学会类的定义和使用;3、掌握属性的创建和修改;4、掌握继承的基本语法。 ......
  • [Python]学习笔记之- __name__ == '__main__'
     if__name__=='__main__':大多数规范的Python源码中都可以看到这个语句,初学者可能不清楚这句话的用处。这句代码的字面意思就是在做判断__name__是否为'__main__'。这......
  • Python安装OCR识别库tesserocr_pytesseract教程
    Python安装OCR识别库tesserocr1.tesserocr下载https://digi.bib.uni-mannheim.de/tesseract/尽量选不带dev的版本,dev是开发版本,不带dev的是稳定版个人配置tesseract-......
  • Python 用户输入
    1.input()输入【实例】:data=input("请输入:")print(data,type(data))【运行结果】:请输入:3131<class'str'> 2.int类型转换从input()函数输入的内容都是str......