,则详细页地址获取错误。" />

pyspider 在index_page中爬取链接地址时,如果页面定义了,则详细页地址获取错误。

发布于 2022-09-06 09:20:27 字数 1105 浏览 9 评论 0

1.问题
pyspider 在index_page中爬取链接地址时,如果页面定义了<base href="">,则详细页地址获取错误。
2.代码

    @every(minutes=5 * 60)
        def on_start(self):
            self.crawl('http://jhsjk.people.cn/result/?keywords=&button=%E6%90%9C%E7%B4%A2', callback=self.index_page)
    
    def index_page(self, response):
            for each in response.doc('div.fr ul.list_14 li a').items():
                print(each.attr.href)
                if each.attr.href.startswith("http://") or each.attr.href.startswith("https://"):
                    self.crawl(each.attr.href, callback=self.detail_page)
                else:
                    self.crawl(urljoin(baseurl, each.attr.href), callback=self.detail_page)

3,程序运行结果
代码获取到的each.attr.href是由http://jhsjk.people.cn/result/。。。 和 链接指向的地址如:"article/29613458"合成的,url为http://jhsjk.people.cn/result/article/29613458

但是,实际上页面自己定义了<base href="http://jhsjk.people.cn/" />,因此,url地址应该是http://jhsjk.people.cn/article/29613458

  1. 希望能够改正上面的问题

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

睫毛溺水了 2022-09-13 09:20:27

没办法,程序中强制replace解决。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文