import scrapy


class ManagerspiderSpider(scrapy.Spider):
    name = 'managerspider'
    #allowed_domains = ['www.xxx.com']
    start_urls = ['https://www.howbuy.com/fund/manager/']

    def parse(self, response):

        tr_list = response.xpath('/html/body/div[2]/div[3]/div[3]/table//tr[3]')



这里获取到的tr_list为空,网上也查了资料,说是浏览器会自动增加tbody.但是我打印了scrapy爬下来的HTML文件:
['<table width="100%" border="0" cellspacing="0" cellpadding="0" class="chart-table ftArial ">\n                    <thead>\n                    <tr>\n                        <th width="8%" rowspan="2">名次</th>\n                        <th width="10%" rowspan="2">基金经理</th>\n                        <th width="9%" rowspan="2">姓名</th>\n                        <th width="8%" rowspan="2">\n                            <a href="javascript:void(0)" class="orderField" target="_self" data-value="rqzs">人气指数<span class="ico_default"></span></a>\n                        </th>\n                        <th width="9%" rowspan="2">\n                            <a href="javascript:void(0)" class="orderField" target="_self" data-value="cyrq">从业时间<span class="ico_default"></span></a>\n                        </th>\n                        <th width="10%" rowspan="2">当前所在公司</th>\n                        <th width="10%" rowspan="2">\n                            <a href="javascript:void(0)" class="orderField" target="_self" data-value="jdjf">综合评分<span class="ico_default"></span></a>\n                        </th>\n                        <th width="12%" rowspan="2">最擅长的基金类型</th>\n                        <th colspan="2">代表基金</th>\n                    </tr>\n                    <tr>\n                        <th width="14%">基金简称</th>\n                        <th width="10%">\n                            <a target="_self" class="orderField" href="javascript:void(0)" data-value="syl">近3月收益<span class="ico_default"></span></a>\n                        </th>\n                    </tr>\n                    </thead>\n                    <tbody></tbody>\n                </table>']
这里的 tbody里确实为空。
而我在网页上看到的,确实是有数据的。

请高手解惑。

本帖子中包含更多资源

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

x
举报 使用道具
| 回复

共 5 个关于本帖的回复 最后回复于 2021-11-5 15:38

沙发
Fuller 管理员 发表于 2021-11-5 10:51:46 | 只看该作者
使用基本的request程序库的话,不会执行动态代码,那么看到的内容和浏览器的开发者工具看到的内容会不一样。可以先用 curl 命令把html文件下载下来瞅瞅,按照这个xpath找下去,能否找到那个节点
  1. /html/body/div[2]/div[3]/div[3]/table//tr[3]
复制代码


举报 使用道具
板凳
fengsj_2015 新手上路 发表于 2021-11-5 13:13:38 | 只看该作者
@Fuller 同意你的说法,不会执行动态代码,我把html文件下载下来,发现tbody里的内容为空。
我也用了 /html/body/div[2]/div[3]/div[3]/table//tr[3],也没有取到。
我感觉问题的重点在于,我用response请求获取到的html与浏览器里加载的html里的内容不一致,可能就是动态加载的代码没有取到。
盲猜 是不是XHR请求,结果也不是。
举报 使用道具
地板
fengsj_2015 新手上路 发表于 2021-11-5 13:20:23 | 只看该作者
@Fuller 同意你的说法。我觉得可能是response请求回来的html与浏览器实际加载的内容不一致引起的。
我把response返回的html下载下来,发现tbody里面的就是空的,没有tr,td。但是在浏览器里看,是有的。
使用shell验证了一下,您这边发的xpath,也是没有取到。

本帖子中包含更多资源

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

x
举报 使用道具
5#
fengsj_2015 新手上路 发表于 2021-11-5 13:22:04 | 只看该作者
没有办法回复了么,我回复了两次都没有成功。
您的xpath 我也试了,数据仍为空,
举报 使用道具
6#
Fuller 管理员 发表于 2021-11-5 15:38:22 | 只看该作者
fengsj_2015 发表于 2021-11-5 13:22
没有办法回复了么,我回复了两次都没有成功。
您的xpath 我也试了,数据仍为空, ...

我发出来的xpath就是你的程序里面的xpath,不是我写的
举报 使用道具
您需要登录后才可以回帖 登录 | 立即注册

精彩推荐

  • 运行Apple无法验证的程序的方法
  • 文本聚类分析软件的安装和使用方法
  • 利用AI阅读和分析文本:扣子COZE记录用户反
  • 在网页片段内直观标注——以B站评论采集为
  • 利用AI阅读和分析文本:使用COZE建设游记文

热门用户

GMT+8, 2024-12-23 23:54