liuhongrun2022 发表于 2023-10-5 18:52:40

pyquery问题

import requests
from pyquery import PyQuery as pq

HEADERS = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
    'Cookie': '此处已删除',
}
url = 'https://fishc.com.cn/thread-234383-1-1.html'
post = requests.get(url, headers=HEADERS, timeout=10)
html = pq(post.text)
print(html('.t_f').eq(0).text())
原帖子中的代码是有缩进的,可是把内容爬取出来就没有缩进了

isdkz 发表于 2023-10-5 18:52:50

这是因为缩进是在HTML源代码中使用的格式,但是在解析HTML时被忽略了。如果您想保留缩进,可以使用HTML的<pre>标签来包含文本,例如:

<pre>
    这是一段
    有缩进的
    文本
</pre>

在pyquery中,您可以使用.text()方法来获取元素的文本内容,但是它会自动去除多余的空格和换行符。如果您想保留这些空格和换行符,可以使用.html()方法来获取元素的HTML代码,然后手动处理它。例如:

html = pq(post.text)
text = html('.t_f').eq(0).html().replace('<br/>', '\n')
return text

这将把HTML代码中的<br/>标签替换为换行符,以保留缩进。

Mike_python小 发表于 2023-10-5 18:53:11

在使用PyQuery库中,可以通过使用.html()方法获取HTML内容并保留原始的缩进。以下是修改后的代码示例:


import requests
from pyquery import PyQuery as pq

HEADERS = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
    'Cookie': '此处已删除',
}

url = 'https://fishc.com.cn/thread-234383-1-1.html'
response = requests.get(url, headers=HEADERS, timeout=10)
html = pq(response.text)

# 获取帖子内容并保留原始缩进
content = html('.t_f').eq(0).html()

print(content)


使用.html()方法而不是.text()方法可以保留原始的HTML结构和缩进。这样你就可以保留帖子内容中的缩进效果了。

希望能对你有所帮助!如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}

陶远航 发表于 2023-10-5 18:53:13

您提到的问题是关于使用 PyQuery 爬取网页内容时,代码块中的缩进丢失。这是因为 HTML 中的空格和缩进在解析时通常会被忽略。要解决这个问题,您可以尝试使用 pre 标签来保留原始格式。以下是一个修改后的代码示例:

import requests
from pyquery import PyQuery as pq

HEADERS = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
    'Cookie': '此处已删除',
}

url = 'https://fishc.com.cn/thread-234383-1-1.html'
post = requests.get(url, headers=HEADERS, timeout=10)
html = pq(post.text)

# 使用 pre 标签来保留原始格式
code_block = html('.t_f').eq(0).find('pre').text()

print(code_block)


这段代码首先使用 PyQuery 解析 HTML,然后查找 .t_f 元素中的第一个 pre 标签。pre 标签通常用于表示预格式化的文本,它会保留空格和换行符。最后,使用 text() 方法获取 pre 标签内的文本内容,这样就可以保留原始的缩进和格式。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案

liuhongrun2022 发表于 2023-10-5 18:56:47

isdkz 发表于 2023-10-5 18:52
这是因为缩进是在HTML源代码中使用的格式,但是在解析HTML时被忽略了。如果您想保留缩进,可以使用HTML的标 ...

转人工

liuhongrun2022 发表于 2023-10-5 18:58:02

陶远航 发表于 2023-10-5 18:53
您提到的问题是关于使用 PyQuery 爬取网页内容时,代码块中的缩进丢失。这是因为 HTML 中的空格和缩进在解 ...

转人工
页: [1]
查看完整版本: pyquery问题