猿问

如何使用 python 遍历 scrapy 中的 XML 子节点?

我想抓取此页面上的评论,但我似乎无法了解如何遍历包含评论的节点的子节点并获取数据点。


这是 hmtl 的一部分:


        <div class="comment">

            <div class="comment-user">

                <div class="comment-user-avatar">

                    <a href="https://www.picuki.com/profile/alexandera_300">

                        <img src="https://scontent-yyz1-1.cdninstagram.com/v/t51.2885-19/s150x150/98342975_2815537605343770_6875611169034338304_n.jpg?_nc_ht=scontent-yyz1-1.cdninstagram.com&amp;_nc_ohc=VjMtcOxXuaQAX_ZCqee&amp;oh=4cf78fecbadcb57a81672c6edecc15a2&amp;oe=5F02D580" alt="alexandera_300">

                    </a>

                </div>

                <div class="comment-user-nickname">

                    <a href="https://www.picuki.com/profile/alexandera_300">@alexandera_300</a>

                </div>

            </div>

            <div class="comment-text">

                #followforfollowback

            </div>

        </div>

        <div class="comment">

            <div class="comment-user">

                <div class="comment-user-avatar">

                    <a href="https://www.picuki.com/profile/coxlogan2008">

                        <img src="https://scontent-yyz1-1.cdninstagram.com/v/t51.2885-19/s150x150/101229634_275138197009045_1475918829270859776_n.jpg?_nc_ht=scontent-yyz1-1.cdninstagram.com&amp;_nc_ohc=e4gTZqQGpEAAX_7U-Q0&amp;oh=36b7f5d1a0d7069f2447f4a318edec7d&amp;oe=5F004A54" alt="coxlogan2008">

                    </a>

                </div>

                <div class="comment-user-nickname">

                    <a href="https://www.picuki.com/profile/coxlogan2008">@coxlogan2008</a>

                </div>

            </div>

            <div class="comment-text">

                👏

            </div>

        </div>

我正在使用的 python 代码片段是这样的:


    def parse_post(self, response):

    img_url = response.meta['img_url']

    caption = response.meta['caption']



但是,当我运行它时,我只获得了第n条评论的数据。有人可以帮我吗?我不明白为什么代码不遍历节点。


提前致谢!


不负相思意
浏览 137回答 1
1回答

慕哥6287543

我认为您的问题来自您的“评论”的 xpath。通过仅获取文本,您不会选择节点。以下更改使其对我有用:# the likes & number of comments only have to be taken once, should not be part of the looplikes = response.xpath('.//span[@class="icon-thumbs-up-alt"]/text()').get()num_of_comments = response.xpath('.//span[@id="commentsCount"]/text()').get()comments = response.xpath('//div[@id="commantsPlace"]/*[@class="comment"]')for comment in comments:&nbsp;&nbsp;&nbsp; &nbsp; comment_user_name = comment.xpath('.//*[@class="comment-user-nickname"]/a/text()').get()&nbsp; &nbsp; comment_text = comment.xpath('.//*[@class="comment-text"]/text()').get()
随时随地看视频慕课网APP

相关分类

Python
我要回答