鱼C论坛

 找回密码
 立即注册
查看: 1549|回复: 5

pyquery问题

[复制链接]
发表于 2023-10-5 18:52:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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())
原帖子中的代码是有缩进的,可是把内容爬取出来就没有缩进了

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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/>标签替换为换行符,以保留缩进。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-5 18:53:11 | 显示全部楼层
在使用PyQuery库中,可以通过使用.html()方法获取HTML内容并保留原始的缩进。以下是修改后的代码示例:
import requestsfrom pyquery import PyQuery as pqHEADERS = {    '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结构和缩进。这样你就可以保留帖子内容中的缩进效果了。

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

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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)

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

print(code_block)

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

使用道具 举报

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

转人工
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

转人工
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-29 02:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表