python中使用xpath爬取数据问题
如图我只想提取前4个节点的内容,该怎么修改呢?我不想要第5个节点的text文本内容。代码如下:
import requests
from lxml import etree
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.54"
}
a = requests.get("https://www.52pojie.cn/",headers=headers).text
b = etree.HTML(a)
c = b.xpath("//td[@valign='top']//a//text()")
for i in c:
print(i)
在线等,谢谢。 根据你提供的代码截图,你想提取前四个节点的内容,并且不包括第五个节点的文本内容。你可以通过切片来实现这个目标。
这里假设你获取到的节点列表为c,你可以使用c[:4]来提取前四个节点:
c = b.xpath("//td[@valign='top']//a//text()")
for i in c[:4]:
print(i)
在上述代码中,c[:4]表示从列表的开头开始,截取到索引为3(第四个节点)的位置,即提取了前四个节点。
这样修改后,你会发现只输出前四个节点的内容,而第五个节点的内容将被忽略。
希望这可以帮助到你!如果还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案 你可以使用切片操作来提取前4个节点的内容,即将 c 变量的取值范围限制在0到3之间。修改代码如下:
import requests
from lxml import etree
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.54"
}
a = requests.get("https://www.52pojie.cn/",headers=headers).text
b = etree.HTML(a)
c = b.xpath("//td[@valign='top']//a//text()")[:4]# 使用切片操作获取前4个节点的内容
for i in c:
print(i)
这样,只会打印出前4个节点的内容,而不包括第5个节点的文本内容。 陶远航 发表于 2023-8-25 17:30
根据你提供的代码截图,你想提取前四个节点的内容,并且不包括第五个节点的文本内容。你可以通过切片来实现 ...
刚试了下 这样不行只获取了第一个节点的前4个内容 isdkz 发表于 2023-8-25 17:32
你可以使用切片操作来提取前4个节点的内容,即将 c 变量的取值范围限制在0到3之间。修改代码如下:
刚试了下 这样不行只获取了第一个节点的前4个内容 本帖最后由 陶远航 于 2023-8-25 17:42 编辑
python小小白哟 发表于 2023-8-25 17:36
刚试了下 这样不行只获取了第一个节点的前4个内容
import requests
from lxml import etree
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.54"
}
a = requests.get("https://www.52pojie.cn/",headers=headers).text
b = etree.HTML(a)
for i in range(1,5):
c = b.xpath(f"//td[@valign='top'][{i}]//a//text()")
for i in c:
print(i)
人工回答,实测可行 6楼可以的,改了,看看 陶远航 发表于 2023-8-25 17:39
人工回答,实测可行
还是不行呀还是只获取到了第一个节点的前4个标题。 陶远航 发表于 2023-8-25 17:42
6楼可以的,改了,看看
好的这个可以了,多谢。
页:
[1]