鱼C论坛

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

[已解决]xapth提取不了文本

[复制链接]
发表于 2019-11-5 11:28:39 | 显示全部楼层 |阅读模式

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

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

x
import requests
from lxml import etree
res=requests.get('https://www.pearvideo.com/')
#print(res.text)

res_xpath=etree.HTML(res.text)
res_xpath.xpath('/html/body/div[2]/div[2]/div/ul[2]/li[1]/div/a/div[2]/div[2]/text()')
print(res_xpath)



/text()不是应该把我的那个<Element html at 0x158c0be8c08>转换成文字嘛,但是运行结果还是这种
最佳答案
2019-11-5 15:41:55
本帖最后由 foxiangzun 于 2019-11-5 15:43 编辑

你没把内容赋值出来,以下是我这边的测试结果,亲测,有效

  1. import requests
  2. from lxml import etree

  3. url = r'https://www.pearvideo.com/'
  4. headers = {
  5.         'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64)'
  6. }
  7. response = requests.get(url, headers=headers)
  8. webcontent = etree.HTML(response.text)
  9. cententce = webcontent.xpath("/html/body/div[2]/div[2]/div/ul[2]/li[1]/div/a/div[2]/div[2]/text()")
  10. print(cententce)
复制代码


另外,xpath 里面的内容尽量不要用单引号,用双引号更好,如果碰上需要引用指定的标签,且标签带了值,可以直接用单引号把值包裹起来,cententce 那一段也可以写成下面的样子:

  1. cententce = webcontent.xpath("//div[@class='act-main cmmain']/div[2]/div/ul[2]/li[1]/div/a/div[2]/div[2]/text()")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-5 14:55:35 From FishC Mobile | 显示全部楼层
你浏览器上xpath路径能提取到文本吗,如果不行,那在python中自然也不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-5 15:08:29 From FishC Mobile | 显示全部楼层
要提取哪部分数据
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-5 15:41:55 | 显示全部楼层    本楼为最佳答案   
本帖最后由 foxiangzun 于 2019-11-5 15:43 编辑

你没把内容赋值出来,以下是我这边的测试结果,亲测,有效

  1. import requests
  2. from lxml import etree

  3. url = r'https://www.pearvideo.com/'
  4. headers = {
  5.         'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64)'
  6. }
  7. response = requests.get(url, headers=headers)
  8. webcontent = etree.HTML(response.text)
  9. cententce = webcontent.xpath("/html/body/div[2]/div[2]/div/ul[2]/li[1]/div/a/div[2]/div[2]/text()")
  10. print(cententce)
复制代码


另外,xpath 里面的内容尽量不要用单引号,用双引号更好,如果碰上需要引用指定的标签,且标签带了值,可以直接用单引号把值包裹起来,cententce 那一段也可以写成下面的样子:

  1. cententce = webcontent.xpath("//div[@class='act-main cmmain']/div[2]/div/ul[2]/li[1]/div/a/div[2]/div[2]/text()")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2019-11-5 15:50:44 | 显示全部楼层
import requests
from lxml import etree
res=requests.get('https://www.pearvideo.com/')
#print(res.text)

res_xpath=etree.HTML(res.text)
res_xpath = res_xpath.xpath('/html/body/div[2]/div[2]/div/ul[2]/li[1]/div/a/div[2]/div[2]/text()')
print(res_xpath)

Xpath语句是没问题的,xpath方法用错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-5 19:53:22 | 显示全部楼层
本帖最后由 geen 于 2019-11-5 19:54 编辑

首先看到的问题是这句 res_xpath.xpath('/html/body/div[2]/div[2]/div/ul[2]/li[1]/div/a/div[2]/div[2]/text()')  ,使用xpath()方法处理对象res_xpath后,没有进行赋值操作,没有赋值操作的话,一旦执行下一句语句的时候,res_xpath.xpath()的值会被清空。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 10:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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