小白求助解析源码的问题,请大师帮忙!
本帖最后由 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/div/div/div/div/div/table/tbody/tr/td/a')
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:// 本帖最后由 isdkz 于 2023-3-29 17:04 编辑
你直接在浏览器复制xpath,不过不一定有效,因为浏览器直接复制的 xpath 都是渲染过后的页面的,
你通过代码获取的没有经过渲染 从代码中可以看出,下载基金概况页面的函数是download_fund_jbgk(fund_code),其中fund_code是基金代码参数。在该函数中,使用requests.get()方法获取基金概况页面的响应,然后返回响应的文本内容。
在主程序中,调用download_fund_jbgk函数获取基金概况页面的响应,然后使用etree.HTML()方法将响应内容转换为HTML格式,再使用xpath()方法查找所需信息。
根据你的需求,你可以在xpath()方法中指定查找包含“方方”名字的元素路径,然后将其打印出来。例如:
ff = html.xpath('//*[@id="bodydiv"]/div/div/div/div/div/div/table/tbody/tr, "方方")]/td/a')
print(ff)
这里使用了contains()函数来查找包含“方方”名字的<tr>元素,然后获取该元素的第一个<td>子元素的文本内容,即“方方”名字所在的单元格。最后获取该单元格内的第一个<a>子元素,即基金经理的名字链接。如果该链接是一个文本链接,可以使用.text属性获取链接文本,或者使用.get('href')方法获取链接地址。如果该链接是一个图片链接,可以使用.get('alt')方法获取图片的alt属性值。 isdkz 发表于 2023-3-29 17:01
你直接在浏览器复制xpath,不过不一定有效,因为浏览器直接复制的 xpath 都是选渲染过后的页面的,
你通 ...
我很赞同!
可以用SELENIUM isdkz 发表于 2023-3-29 17:05
基金???
用的CAHTGPT{:10_258:} 本帖最后由 isdkz 于 2023-3-29 17:08 编辑
歌者文明清理员 发表于 2023-3-29 17:06
用的CAHTGPT
我去,它这都能知道,我才发现这个代码里面有个网址,打开网址确实是基金
你的助手确实比我的牛X{:10_256:} 代码中的 xpath 我给你改了一下:
因为浏览器通常会给表格自动加上 tbody 标签,但是代码里面一般没写,所以我把 tbody 去掉了
获取文本加上了 text() 所以我把 a 换成了 a/text()
a 只能取到第一个名字所在的元素,取文本用 text(),而我换成 a 会把两个名字都取出来
//*[@id="bodydiv"]/div/div/div/div/div/div/table/tbody/tr/td/a
//*[@id="bodydiv"]/div/div/div/div/div/div/table/tr/td/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/div/div/div/div/div/table/tr/td/a/text()')
print(ff)
页:
[1]