import requests from bs4 import BeautifulSoup url="https://www.shu.edu.cn/" headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get(url, headers=headers) html=response.text soup=BeautifulSoup(html,"lxml") content_all=soup.find_all("a") for content in content_all: contentstring=content.text if contentstring!=None: print(contentstring)这段代码解析出来的是乱码
时间: 2024-04-05 12:31:41 浏览: 68
import sys import os import urllib from bs4 import BeautifulSoup
如果在使用BeautifulSoup解析HTML文档时出现乱码,有以下几种可能的原因:
1. 网站使用了非UTF-8编码:可以尝试将BeautifulSoup的解析器参数改成网站实际使用的编码方式。
2. 网站使用了动态加载,无法获取完整的HTML文档:可以使用Selenium等工具模拟浏览器行为获取完整的HTML文档。
3. requests获取的响应内容格式不对:可以尝试使用response.content代替response.text,或者指定requests的编码方式。
在这段代码中,如果出现了乱码,可以尝试将BeautifulSoup的解析器参数改成网站实际使用的编码方式。例如,如果网站使用了GBK编码,可以将解析器参数改为"html.parser"或者"lxml",并且指定编码方式为'GBK':
```python
import requests
from bs4 import BeautifulSoup
url = "https://www.shu.edu.cn/"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get(url, headers=headers)
response.encoding = 'GBK' # 指定编码方式为GBK
html = response.text
soup = BeautifulSoup(html, "html.parser") # 或者使用lxml解析器
content_all = soup.find_all("a")
for content in content_all:
contentstring = content.text
if contentstring != None:
print(contentstring)
```
需要注意的是,如果网站使用的是动态加载方式,这种方法可能无法获取完整的HTML文档,需要使用Selenium等工具模拟浏览器行为获取完整的HTML文档。
阅读全文