本文介绍: 1. 如何请求解析url 2. 如何获取标签里面文本 3. 如何解析JSON格式 4. 如何添加常用的header 5. 如何合并两个div 6. 如何删除html dom部分结构 7. 如何一次获取所有div标签里的文本 8. python爬虫如何改变响应文本字符集编码 9. 如何进行字符集转码 11. response.textre

前言

为了巩固所学的知识作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。
博客参考源码可以在我主页资源里找到,如果在学习过程中有什么疑问欢迎大家评论区向我提出)

1. 如何何请求解析url

  1. BeautifulSoup 是一个 Python 库,用于网络爬虫目的。它提供了一种方便和高效的方式来从 HTML 和 XML 文档中提取数据。使用 BeautifulSoup,你可以解析和遍历 HTML 结构搜索特定元素,并从网页提取相关数据
  1. 该库支持不同解析器,如内置的 Python 解析器、lxmlhtml5lib,允许你根据特定需求选择最适合的解析器。BeautifulSoup 的优势在于它能够处理格式混乱或损坏的 HTML 代码,使其成为处理复杂情况下的网络爬虫任务的强大工具
import requests
from bs4 import BeautifulSoup

# 发送请求获取 HTML
response = requests.get(url)
html = response.text

# 创建 Beautiful Soup 对象
soup = BeautifulSoup(html, 'html.parser')

# 通过选择器选择 DOM 元素进行操作
element = soup.select('#my-element')
import requests
from lxml import etree

# 发送请求获取 HTML
response = requests.get(url)
html = response.text

# 创建 lxml HTML 解析器对象
parser = etree.HTMLParser()

# 解析 HTML
tree = etree.fromstring(html, parser)

# 通过XPath选择 DOM 元素进行操作
elements = tree.xpath('//div[@class="my-element"]')

2. 如何获取标签里面的文本

在Python中,你可以使用多种库和方法来获取HTML标签里面的文本。以下是几种常见方法

  • 方式一:使用BeautifulSoup库:
   from bs4 import BeautifulSoup

   # 假设html为包含标签的HTML文档
   soup = BeautifulSoup(html, 'html.parser')

   # 获取所有标签内的文本
   text = soup.get_text()

   # 获取特定标签内的文本(例如p标签)
   p_text = soup.find('p').get_text()
   from lxml import etree

   # 假设html为包含标签的HTML文档
   tree = etree.HTML(html)

   # 获取所有标签内的文本
   text = tree.xpath('//text()')

   # 获取特定标签内的文本(例如p标签)
   p_text = tree.xpath('//p/text()')
   import re

   # 假设html为包含标签的HTML文档
   pattern = re.compile('<[^>]*>')
   text = re.sub(pattern, '', html)

这些方法可以根据你的需求选择其中之一,它们都可以帮助你提取出HTML标签里面的文本内容。请注意,这些方法在处理复杂的HTML文档时可能会有一些限制,因此建议使用专门的HTML解析库(如BeautifulSoup、lxml)来处理HTML文档以获得更好的灵活性和准确性。

3. 如何解析JSON格式

import json

# 假设你已经获取到了 JSON 数据,将其存储json_data 变量
json_data = '''
{
  "status": 200,
  "message": "success",
  "datatype": "json",
  "data": {
    "pageArticleList": [
      {
        "indexnum": 0,
        "periodid": 20200651,
        "ordinate": "",
        "pageid": 2020035375,
        "pagenum": "6 科协动态",
        "title": "聚焦“科技创新+先进制造” 构建社会化大科普工作格局"
      }
    ]
  }
}
'''

# 解析 JSON 数据
data = json.loads(json_data)

# 提取 title 属性的值
title = data["data"]["pageArticleList"][0]["title"]

# 输出 title 属性的值
print(title)
list = json.loads(res.text)
    for i in list:
        print(i.get('edition'))

在这里插入图片描述

4. 如何添加常用的header

import requests

url = "https://example.com"
headers = {
    "User-Agent": "Mozilla/5.0",
    "Accept-Language": "en-US,en;q=0.9",
    "Referer": "https://example.com",
    # 添加其他常用请求头...
}

response = requests.get(url,stream=True, headers=headers)

5. 如何合并两个div

try:
  html = ""
         <html>
           <body>
           </body>
         </html>
         ""
  soup = BeautifulSoup(html, 'html.parser')
  # 创建新的div标签
  new_div = soup.new_tag('div')
  temp_part1 = html_dom.find('div', 'detail-title')
  new_div.append(temp_part1)
  temp_part2 = html_dom.find("div", "detail-article")
  new_div.append(temp_part2)
  card = {"content": "", "htmlContent": ""}
  html_dom=new_div
except:
  return

6. 如何删除html dom部分结构

from bs4 import BeautifulSoup

# 假设你已经获取到了 DOM 结构,将其存储dom 变量
dom = '''
&amp;lt;div class="container"&amp;gt;
    &amp;lt;h1&amp;gt;Hello, World!&amp;lt;/h1&amp;gt;
    &amp;lt;p&amp;gt;This is a paragraph.&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
'''

# 创建 Beautiful Soup 对象
soup = BeautifulSoup(dom, 'html.parser')

# 找到要删除部分
div_element = soup.find('div', class_='container')
div_element.extract()

# 输出修改后的 DOM 结构
print(soup.prettify())

7. 如何一次性获取所有div标签里的文本

  • 一次性获取所有<div>标签里的文本,你可以使用BeautifulSoup库或lxml库进行解析。以下是使用这两个库的示例代码
  • 方式一:使用BeautifulSoup库:
from bs4 import BeautifulSoup

# 假设html为包含标签的HTML文档
soup = BeautifulSoup(html, 'html.parser')

# 查找所有div标签并获取其文本内容
div_texts = [div.get_text() for div in soup.find_all('div')]
  • 方式二:使用lxml库:
from lxml import etree

# 假设html为包含标签的HTML文档
tree = etree.HTML(html)

# 使用XPath查找所有div标签并获取其文本内容
div_texts = tree.xpath('//div//text()')

8. python爬虫如何改变响应文本字符编码

import requests

response = requests.get('https://example.com')
response.encoding = 'UTF-8'  # 设置响应文本的字符集编码为UTF-8
print(response.text)

apparent_encoding用于获取响应内容的推测字符集编码,是一个只读属性,它只返回推测的字符集编码,并不能用于设置或更改字符集编码。如果需要更改字符集编码,请使用response.encoding属性进行设置

import requests
import chardet

response = requests.get('https://example.com')
encoding = chardet.detect(response.content)['encoding']  # 检测响应文本的字符集编码
response.encoding = encoding  # 设置响应文本的字符集编码
print(response.text)
  • 方式三:使用Unicode编码:如果你无法确定响应文本的正确字符集编码,你可以将文本内容转换为Unicode编码,这样就不需要指定字符集编码了。示例代码如下
import requests

response = requests.get('https://example.com')
text = response.content.decode('unicode-escape')
print(text)

9. 如何进行字符集转码

text = "你好"
encoded_text = text.encode('utf-8')  # 将文本从当前编码转换为UTF-8编码
print(encoded_text)
encoded_text = b'xe4xbdxa0xe5xa5xbd'  # UTF-8 编码的字节
decoded_text = encoded_text.decode('utf-8')  # 将字节串从UTF-8解码为Unicode文本
print(decoded_text)

10. response.text 和 respone.content区别

在许多编程语言的HTTP请求库中比如Python的requests库,有两个常用的属性用于获取HTTP响应的内容:response.text和response.content区别如下

  • response.text:

1. response.text返回的是一个字符串表示HTTP响应的内容。
2. 这个字符串是根据HTTP响应的字符编码来解码的,默认使用UTF-8编码。
3. 如果响应中包含了其他编码的内容,那么可以通过指定response.encoding属性来手动指定相应的编码方式进行解码

  • response.content:

1. response.content返回的是一个字节流表示HTTP响应的内容。
2. 这个字节流是原始的二进制数据,没有进行任何编码解码操作。
3. response.content适用于处理二进制文件比如图片、音视频文件等。

简而言之,response.text适用于处理文本内容,会自动进行编码解码操作,而response.content适用于处理二进制内容,返回的是原始字节流。

使用哪个属性取决于你处理的内容类型和需求。如果你处理的是文本内容,比如HTML、JSON数据等,那么通常使用response.text。如果你处理的是二进制文件比如图像或音视频文件,那么使用response.content更合适。

11. 如何发送post请求访问页面

解析一个请求主要关注以下几个方面

在这里插入图片描述

以下是一个示例代码

import json

import requests
def main():
    url = 'https://www.gzyouthnews.org.cn/index/index'
    header = {
        'X-Requested-With':'XMLHttpRequest'
    }
    data={
        'act':'list',
        'date':'2023-08-10',
        'paper_id':1
    }
    res = requests.post(url=url,headers=header,data=data)
    list = json.loads(res.text)
    for i in list:
        print(i.get('edition'))

if __name__ == '__main__':
    main()

12. 如何获取 url 中的参数

要从给定的 URL 中获取参数 page=100,你可以使用 URL 解析库来解析 URL,并提取出所需的参数。
以下是使用 Python 的 urllib.parse 模块解析 URL 参数的示例代码:

from urllib.parse import urlparse, parse_qs

url = "https://blog.csdn.net/phoenix/web/v1/comment/list/131760390?page=100&amp;size=10&amp;fold=unfold&amp;commentId="

parsed_url = urlparse(url)
query_params = parse_qs(parsed_url.query)

page_value = query_params.get("page", [None])[0]
print(page_value)

在上述示例中,我们首先使用 urlparse 函数解析 URL,然后使用 parse_qs 函数解析查询参数部分。parse_qs 函数查询参数解析为字典,其中键是参数名称,值是参数值的列表。

然后,我们使用 query_params.get(“page”, [None])[0]字典中获取名为 page 的参数值。这将返回参数的值,如果该参数不存在,则返回 None

输出结果将是 100,这是从 URL https://blog.csdn.net/phoenix/web/v1/comment/list/131760390?page=100&size=10&fold=unfold&commentId=提取page 参数的值。

请注意,如果 URL 的参数值是字符串形式,你可能需要根据需要进行进一步类型转换

总结

欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注点赞收藏支持一下。
博客参考源码可以在我主页资源里找到,如果在学习过程中有什么疑问欢迎大家评论区向我提出)

原文地址:https://blog.csdn.net/HHX_01/article/details/132554920

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_29506.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注