鱼C论坛

 找回密码
 立即注册
查看: 1886|回复: 6

[已解决]小白求助解析源码的问题,请大师帮忙!

[复制链接]
发表于 2023-3-29 16:59:21 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 futui 于 2023-3-29 17:00 编辑

需求:我想用下面这个代码  ,找到X方方这个人

###代码的第四行代码”print(response) “ 在显示屏上看不到方方这个名字,如果用下面两行代码写入桌面文件则可以看到 方方这个名字
with open(r'C:\Users\ppp\Desktop\webpage.txt', "w") as f:   
    f.write(r)

我想用xpath 达到目的,要如何做,求大师帮帮忙

###代码
from lxml import etree
import requests

response = download_fund_jbgk('000001')
print(response)      

html = etree.HTML(response)
result = etree.tostring(html)
#print(result.decode())
ff=result.xpath('//*[@id="bodydiv"]/div[8]/div[3]/div[2]/div[3]/div/div[1]/table/tbody/tr[6]/td[1]/a[1]')
print(ff)



def download_fund_jbgk(fund_code):        
    《地址= '##fundf10.eastmoney.com/jbgk_' + fund_code + '.html'》      
    r = requests.get(url)         
    response = r.text   

    return response
   
##:http://
最佳答案
2023-3-29 17:24:46
代码中的 xpath 我给你改了一下:

因为浏览器通常会给表格自动加上 tbody 标签,但是代码里面一般没写,所以我把 tbody 去掉了

获取文本加上了 text() 所以我把 a[1] 换成了 a/text()

a[1] 只能取到第一个名字所在的元素,取文本用 text(),而我换成 a 会把两个名字都取出来

//*[@id="bodydiv"]/div[8]/div[3]/div[2]/div[3]/div/div[1]/table/tbody/tr[6]/td[1]/a[1]

//*[@id="bodydiv"]/div[8]/div[3]/div[2]/div[3]/div/div[1]/table/tr[6]/td[1]/a/text()
###代码
from lxml import etree
import requests

def download_fund_jbgk(fund_code):        
    url = 'http://fundf10.eastmoney.com/jbgk_' + fund_code + '.html'   
    r = requests.get(url)         
    response = r.text   
    print(url)
    return response
    

response = download_fund_jbgk('000001')     

html = etree.HTML(response)
result = etree.tostring(html)
#print(result.decode())
ff = html.xpath('//*[@id="bodydiv"]/div[8]/div[3]/div[2]/div[3]/div/div[1]/table/tr[6]/td[1]/a/text()')
print(ff)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-29 17:01:35 | 显示全部楼层
本帖最后由 isdkz 于 2023-3-29 17:04 编辑

你直接在浏览器复制xpath,不过不一定有效,因为浏览器直接复制的 xpath 都是渲染过后的页面的,

你通过代码获取的没有经过渲染
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-29 17:02:01 | 显示全部楼层
从代码中可以看出,下载基金概况页面的函数是download_fund_jbgk(fund_code),其中fund_code是基金代码参数。在该函数中,使用requests.get()方法获取基金概况页面的响应,然后返回响应的文本内容。
在主程序中,调用download_fund_jbgk函数获取基金概况页面的响应,然后使用etree.HTML()方法将响应内容转换为HTML格式,再使用xpath()方法查找所需信息。
根据你的需求,你可以在xpath()方法中指定查找包含“方方”名字的元素路径,然后将其打印出来。例如:
ff = html.xpath('//*[@id="bodydiv"]/div[8]/div[3]/div[2]/div[3]/div/div[1]/table/tbody/tr[contains(td[1], "方方")]/td[1]/a[1]')
print(ff)
这里使用了contains()函数来查找包含“方方”名字的<tr>元素,然后获取该元素的第一个<td>子元素的文本内容,即“方方”名字所在的单元格。最后获取该单元格内的第一个<a>子元素,即基金经理的名字链接。如果该链接是一个文本链接,可以使用.text属性获取链接文本,或者使用.get('href')方法获取链接地址。如果该链接是一个图片链接,可以使用.get('alt')方法获取图片的alt属性值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-29 17:03:17 | 显示全部楼层
isdkz 发表于 2023-3-29 17:01
你直接在浏览器复制xpath,不过不一定有效,因为浏览器直接复制的 xpath 都是选渲染过后的页面的,

你通 ...

我很赞同!

可以用SELENIUM
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-29 17:06:30 | 显示全部楼层

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

使用道具 举报

发表于 2023-3-29 17:07:18 | 显示全部楼层
本帖最后由 isdkz 于 2023-3-29 17:08 编辑


我去,它这都能知道,我才发现这个代码里面有个网址,打开网址确实是基金

你的助手确实比我的牛X
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2023-3-29 17:24:46 | 显示全部楼层    本楼为最佳答案   
代码中的 xpath 我给你改了一下:

因为浏览器通常会给表格自动加上 tbody 标签,但是代码里面一般没写,所以我把 tbody 去掉了

获取文本加上了 text() 所以我把 a[1] 换成了 a/text()

a[1] 只能取到第一个名字所在的元素,取文本用 text(),而我换成 a 会把两个名字都取出来

//*[@id="bodydiv"]/div[8]/div[3]/div[2]/div[3]/div/div[1]/table/tbody/tr[6]/td[1]/a[1]

//*[@id="bodydiv"]/div[8]/div[3]/div[2]/div[3]/div/div[1]/table/tr[6]/td[1]/a/text()
###代码
from lxml import etree
import requests

def download_fund_jbgk(fund_code):        
    url = 'http://fundf10.eastmoney.com/jbgk_' + fund_code + '.html'   
    r = requests.get(url)         
    response = r.text   
    print(url)
    return response
    

response = download_fund_jbgk('000001')     

html = etree.HTML(response)
result = etree.tostring(html)
#print(result.decode())
ff = html.xpath('//*[@id="bodydiv"]/div[8]/div[3]/div[2]/div[3]/div/div[1]/table/tr[6]/td[1]/a/text()')
print(ff)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-14 20:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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