鱼C论坛

 找回密码
 立即注册
查看: 646|回复: 9

[已解决]求助xpath问题,有id和class时怎么写?

[复制链接]
发表于 2020-4-15 11:21:45 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 jjxx2005 于 2020-4-15 11:48 编辑

我想提取每一个<li>标签中<img>中的src属性

tree.xpath('//div[@class="proLis"]//img/@src')

这样写不行,他还有个id   请问像这种div里面有id和class的怎么办?


import requests
import os
from lxml import etree
# 创建一个文件夹,保存所有图片
if not os.path.exists('./海报'):
    os.mkdir('./海报')    
url = 'http://www.jkl.com.cn/cn/phoLis.aspx?id=697'
for i in range(1,5):
    data = {'__EVENTARGUMENT':'i'}
    UA伪装 = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36'}
    响应数据 = requests.get(url=url,params=data,headers=UA伪装).text
    tree = etree.HTML(响应数据)
    标签列表 = tree.xpath('//div[@class="proLis"]//img/@src')
    print(标签列表)

现在返回的都是空列表
最佳答案
2020-4-15 12:02:53
我稍稍改了改,可以的,另外字典data的i不要带引号。
import requests
import os
from lxml import etree

# 创建一个文件夹,保存所有图片
if not os.path.exists('post'):
    os.mkdir('post')
url = 'http://www.jkl.com.cn/cn/phoLis.aspx?id=697'
for i in range(1, 5):
    data = {'__EVENTARGUMENT': i}
    headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36'}
    r = requests.get(url=url, params=data, headers=headers)
    html = etree.HTML(r.text)
    result = html.xpath('//div[@class="proLis"]//img/@src')
    print(result)
微信图片_20200416031830.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-15 11:24:53 | 显示全部楼层
用BS
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-15 11:27:50 | 显示全部楼层

BS4我会用,那个简单  我现在学xpath
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-15 11:29:05 | 显示全部楼层

    soup = BeautifulSoup(响应数据,'lxml')
    标签列表 = soup.select('.proLis > ul > li')

Bs4 我已经成功搞定,但是xpath不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-15 11:44:43 | 显示全部楼层
写的没错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-15 11:47:06 | 显示全部楼层

可是返回的都是空列表。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-15 12:01:59 From FishC Mobile | 显示全部楼层
jjxx2005 发表于 2020-4-15 11:47
可是返回的都是空列表。。。

有id的和class的,用一个就可以了
不过id 是唯一的,class却是可能有重复的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-15 12:02:53 | 显示全部楼层    本楼为最佳答案   
我稍稍改了改,可以的,另外字典data的i不要带引号。
import requests
import os
from lxml import etree

# 创建一个文件夹,保存所有图片
if not os.path.exists('post'):
    os.mkdir('post')
url = 'http://www.jkl.com.cn/cn/phoLis.aspx?id=697'
for i in range(1, 5):
    data = {'__EVENTARGUMENT': i}
    headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36'}
    r = requests.get(url=url, params=data, headers=headers)
    html = etree.HTML(r.text)
    result = html.xpath('//div[@class="proLis"]//img/@src')
    print(result)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-15 12:03:07 | 显示全部楼层
wp231957 发表于 2020-4-15 12:01
有id的和class的,用一个就可以了
不过id 是唯一的,class却是可能有重复的

我用哪个都返回空列表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-15 17:51:15 From FishC Mobile | 显示全部楼层
tree.xpath('//div[@class="proLis"]/ul/li/a/img/@src')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 12:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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