content = requests.get(url, headers = header) content.encoding = 'UTF-8' print(content.content) soup = etree.HTML(content)
时间: 2024-05-17 17:19:57 浏览: 105
在这段代码中,你先使用 `requests.get()` 方法发送 GET 请求,并设置了请求头。接着将 `content` 的编码设置为 UTF-8,然后打印出来。这里需要注意的是,`content` 属性返回的是二进制数据,如果直接打印,会显示编码后的内容,需要使用 `decode()` 方法进行解码。
最后,你使用 `etree.HTML()` 方法将获取到的内容解析为 HTML 树,但是需要传入的是 `content.content`,表示获取到的二进制数据。如果直接传入 `content`,则会出现类型错误。
修改后的代码如下:
```python
import requests
from lxml import etree
url = 'http://www.example.com'
header = {'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'}
content = requests.get(url, headers=header)
content.encoding = 'UTF-8'
print(content.content.decode('utf-8'))
soup = etree.HTML(content.content)
```
在上面的代码中,我们使用 `content.content` 获取二进制数据,并使用 `decode()` 方法将其解码为 Unicode 字符串,然后才将其传入 `etree.HTML()` 方法进行解析。
阅读全文