《0基础》学习Python——第二十讲__网路爬虫/<3>

一、用post请求爬取网页

        同样与上一节课的get强求的内容差不多,即将requests.get(url,headers=head)代码更换成requests.post(url,headers=head),其余的即打印获取的内容,如果content-type=json类型的,打印上述代码的请求,则用一个命名去获取信息,例如命名reponse=requests.post(url,headers=head),则用response.json去打印请求到的信息,类似于下列代码内容:

import requests

url = 'http://example.com/api'
data = {'key1': 'value1', 'key2': 'value2'}  # POST请求的数据

response = requests.post(url, data=data)
print(response.text)  # 打印服务器返回的响应内容
import requests
 
 
head = {  #进行UA伪装
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0"
}
 
url = "https:---------"
 
# 2、发送请求post带参数
response = requests.post(url, headers=head)
 
#打印数据,以content-type中写的方式去打印
print(response.json)

二、状态码解析

        1、2** 成功,操作被成功接收并处理

        2、3** 重定向,需要进一步的操作以完成请求

        3、4** 客户端错误,请求包含语法错误或无法完成请求

        4、5** 服务器错误,服务器在处理请求的过程中发生了错误

例如下列:

三、页面解析

        1、引入lxml库的etree模块

通过win+cmd输入以下命令,安装lxml库

pip install lxml

通过from lxml import etree 来调用库里面etree模块

因为上部分取出页面内容为response.text 或者response.json等格式,此时通过etree来解析这段内容,如果是将网页源码爬取到文件夹中保存下来再去解析,则用etree.parse()方法,括号内写该文件的地址,如果直接在网页爬取的同时进行解析,那么便用etree.HTML()方法,括号里面写get请求得到的数据,其返回的是element对象,etree.HTML()将HTML文本解析为一个ElementTree对象的根节点(也称为树根或根元素)。ElementTree对象表示了整个HTML文档的结构,可以通过遍历树的节点和元素来提取信息或修改HTML文档。然后对这根节点进行xpath处理即访问标签内容。

        2、HTML()

   etree.HTML()是一个用于构建解析HTML文档的函数。它将HTML文本作为输入,并返回一个Element对象,可以通过该对象来访问和操作HTML文档的元素和属性。

        具体而言,etree.HTML()将HTML文本解析为一个ElementTree对象的根节点(也称为树根或根元素)。ElementTree对象表示了整个HTML文档的结构,可以通过遍历树的节点和元素来提取信息或修改HTML文档。例如线下部分代码:

from lxml import etree

html_text = '''
<html>
  <body>
    <h1>这是一个标题</h1>
    <p>这是一个段落。</p>
  </body>
</html>
'''

root = etree.HTML(html_text)  # 使用etree.HTML()解析HTML文本

# 通过XPath选取元素并获取其文本内容
title = root.xpath('//h1/text()')[0]
paragraph = root.xpath('//p/text()')[0]

print(title)  # 打印标题文本
print(paragraph)  # 打印段落文本

        在这个例子中,我们使用etree.HTML()将HTML文本解析为树,并使用XPath表达式选取了<h1><p>元素的文本内容。然后,我们通过索引[0]获取了第一个匹配结果的文本,并将其打印输出。

        通过使用etree.HTML(),我们可以方便地解析HTML文档,并从中提取所需的信息,如元素、属性或文本内容。

2、xpath()

        XPath是一种用于在XML文档中定位和选择节点的语言。它是一种基于路径表达式的查询语言,可以通过路径表达式来定义从根节点到目标节点的路径,并通过一系列的内置函数、运算符和谓词来筛选出符合条件的节点。

        XPath可以用于XML文档的解析和数据提取。它可以根据节点的标签名、属性、文本内容等进行节点选择和过滤。XPath提供了灵活而强大的定位和选择机制,可以快速、准确地定位到需要处理的数据,并对其进行操作。例如下列代码:

from lxml import etree

xml = '''
<bookstore>
  <book category="cooking">
    <title lang="en">Italian Recipes</title>
    <author>John Doe</author>
    <year>2010</year>
    <price>20.00</price>
  </book>
  <book category="travel">
    <title lang="en">Paris Travel Guide</title>
    <author>Jane Smith</author>
    <year>2012</year>
    <price>15.00</price>
  </book>
</bookstore>
'''

root = etree.fromstring(xml)  # 解析XML文档

# 使用XPath选择节点和提取数据
titles = root.xpath('//title/text()')
authors = root.xpath('//author/text()')

# 打印提取的数据
for title, author in zip(titles, authors):
    print(f'Title: {title}, Author: {author}')

在这个例子中,我们使用lxml库的etree模块将XML文档解析为一个Element对象,并使用XPath选择title和author节点的文本内容。然后,通过遍历titles和authors列表,我们可以打印出提取的数据。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 05:54:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 05:54:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 05:54:01       45 阅读
  4. Python语言-面向对象

    2024-07-21 05:54:01       55 阅读

热门阅读

  1. 实战:shell脚本练习

    2024-07-21 05:54:01       14 阅读
  2. Spring Boot 单元测试什么时候需要添加 @RunWith

    2024-07-21 05:54:01       23 阅读
  3. leetcode--链表类题目总结

    2024-07-21 05:54:01       15 阅读
  4. Python实现精确读取PDF文件的全部内容(8)

    2024-07-21 05:54:01       16 阅读
  5. Python模块化编程:import机制剖析

    2024-07-21 05:54:01       17 阅读
  6. setlocal enabledelayedexpansion 详解

    2024-07-21 05:54:01       20 阅读
  7. MySQL中EXPLAIN关键字详解

    2024-07-21 05:54:01       14 阅读
  8. MFC:只允许产生一个应用程序实例的具体实现

    2024-07-21 05:54:01       19 阅读
  9. LeetCode题(66,69,35,88)--《c++》

    2024-07-21 05:54:01       18 阅读
  10. 【极客日常】Golang一个的slice数据替换的bug排查

    2024-07-21 05:54:01       22 阅读
  11. Fabric:Fabric-Gateway-Go的使用方法

    2024-07-21 05:54:01       17 阅读
  12. 机器学习 - 信息增益

    2024-07-21 05:54:01       20 阅读