python request爬取网页不显示中文、乱码

第一种情况:

# 第一种
import requests
url = 'https://weathernew.pae.baidu.com/weathernew/pc?query=%E5%8C%97%E4%BA%AC%E5%A4%A9%E6%B0%94&srcid=4982'
res = requests.get(url)
res.encoding = 'utf-8'
# 或者
# res.encoding = res.apparent_encoding
print(res.text)

第二种情况 中文内容是"\u98ce\u5bd2\u6765\u88ad\uff0c\u4f53\u611f\u5f88\u51b7":

# 第二种
import requests
url = 'https://weathernew.pae.baidu.com/weathernew/pc?query=%E5%8C%97%E4%BA%AC%E5%A4%A9%E6%B0%94&srcid=4982'
res = requests.get(url)
print(res.text.encode('utf-8').decode('unicode_escape'))

<think>好的,用户想了解如何使用BeautifulSoup库来爬取网页内容。首先,我需要回忆BeautifulSoup的基本用法,并结合用户提供的引用资料来组织回答。用户提到的引用中有三篇关于BeautifulSoup的教程,我需要从中提取关键步骤,并确保引用正确。 首先,BeautifulSoup的使用通常包括获取网页、解析HTML、提取数据三个步骤。用户可能对每个步骤的具体实现太清楚,尤其是如何定位元素和处理数据。需要分步骤详细说明,并给出代码示例,帮助用户理解。 然后,引用资料中提到使用Request库获取HTML,比如引用[1]和[2]。所以第一步需要讲解如何用requests.get获取网页内容,并检查状态码是否为200。这一步可能需要处理可能的异常,但用户的问题可能更关注基础,暂时先涉及异常处理,保持简单。 接下来,解析HTML,创建BeautifulSoup对象。这里需要说明同的解析器,比如html.parser、lxml等,根据引用[1]中的示例,可能使用的是默认的解析器。需要提醒用户安装bs4和requests库。 然后,提取数据部分,用户可能想知道如何通过标签名、类名或id查找元素。引用[2]中提到使用find和find_all方法,需要详细说明这些方法的参数和使用场景,比如find('div', class_='content')。同时,引用[3]中的示例可能涉及表格的提取,可以举一个例子说明如何提取表格数据并保存到文件。 用户还可能关心如何处理动态加载的内容,但根据引用[2]中的第四部分,可能需要XHR技术或处理带参数的URL,但用户当前的问题可能只需要静态页面的爬取,动态内容可能属于进阶内容,可以放在相关问题里。 另外,需要确保代码示例正确,比如在Python中导入库的方式,处理可能的编码问题,以及写入文件时的操作。引用[3]给出了代码仓库的链接,可以借鉴其中的结构。 最后,生成相关问题,可能包括异常处理、动态内容、数据存储优化等,参考用户提供的示例中的相关问题结构,需要三个左右的问题,帮助用户进一步学习。 总结步骤: 1. 安装必要的库 2. 获取网页内容 3. 解析HTML 4. 提取数据 5. 保存数据 6. 示例代码 7. 相关问题 需要检查每个步骤是否符合引用中的内容,并正确标注引用来源。例如,引用[1]提到使用BeautifulSoup入门,引用[2]详细步骤,引用[3]有代码示例。在步骤中适当添加引用标识,确保用户知道信息来源。</think>### BeautifulSoup 爬取网页内容使用教程 #### 一、安装库 首先安装必要的库: ```bash pip install beautifulsoup4 requests ``` #### 二、基本步骤 1. **获取网页内容** 使用 `requests` 库发送 HTTP 请求获取网页 HTML: ```python import requests url = "https://example.com" response = requests.get(url) if response.status_code == 200: html_content = response.text # 获取网页内容 ``` 此步骤需注意处理网络异常和编码问题[^2]。 2. **解析 HTML** 使用 `BeautifulSoup` 解析 HTML 内容: ```python from bs4 import BeautifulSoup soup = BeautifulSoup(html_content, 'html.parser') # 使用默认解析器 ``` 3. **提取数据** - **按标签名查找** ```python titles = soup.find_all('h1') # 获取所有 <h1> 标签 ``` - **按类名或 ID 查找** ```python content_div = soup.find('div', class_='content') # 查找类名为 content 的 div footer = soup.find(id='footer') # 查找 ID 为 footer 的元素 ``` - **提取文本和属性** ```python link = soup.find('a') print(link.text) # 输出链接文本 print(link['href']) # 输出链接地址 ``` 4. **保存数据** 将提取的数据写入文件(如 CSV): ```python import csv with open('data.csv', 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) writer.writerow(['标题', '链接']) for item in soup.find_all('a'): writer.writerow([item.text, item['href']]) ``` #### 三、完整示例 ```python import requests from bs4 import BeautifulSoup import csv url = "https://example.com" response = requests.get(url) if response.status_code == 200: soup = BeautifulSoup(response.text, 'html.parser') links = soup.find_all('a') with open('links.csv', 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) writer.writerow(['文本', '链接']) for link in links: writer.writerow([link.text.strip(), link.get('href', '')]) print("数据已保存至 links.csv") ``` #### 四、常见问题 1. **动态加载内容** 若网页数据通过 JavaScript 动态加载,需结合 `selenium` 或分析 XHR 请求(带参数的 URL)[^2]。 2. **编码问题** 若出现乱码,可手动指定编码: ```python response.encoding = 'utf-8' # 或根据网页实际编码调整 ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值