老师 我抓取了别的网站 但是为什么会反复输出这么多次呢? 获取到的换行符该怎么屏蔽掉

来源:5-5 案例实战:lxml+xpath爬取鱼书网站图书数据

_WHOAMI_

2022-07-13 19:11:35

import requests
from lxml import etree


def headelist(list):
    return ''.join(list)

# 获取html文本
def gethtmltext(url):
    r = requests.get(url)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    return r.text

# 提取html文本信息
def formathtml(html):
    html = etree.HTML(html)
    # 获取所有的学校信息条目
    school_item = html.xpath('//tbody/tr')
    print(school_item)
    # print(school_item)
    for item in school_item:
        # 获取校名
        school_name = headelist(item.xpath("//a[@class='name-cn']/text()"))
        # print(school_name)
        # 获取学校所在地
        address = headelist(item.xpath('//tr/td[3]/text()'))
        print(
            {
                '校名':school_name,
                '所在地区':address
            }
        )




if __name__ == '__main__':
    url = 'https://www.shanghairanking.cn/rankings/bcur/2022'
    html = gethtmltext(url)
    formathtml(html)

相关截图:

https://img.mukewang.com/climg/62cea73d09a4639817070620.jpg

相关截图:

https://img.mukewang.com/climg/62cea75b096246e216520666.jpg

问题描述:

相关网站:https://www.shanghairanking.cn/rankings/bcur/2022

写回答

1回答

好帮手慕小猿

2022-07-14

同学,你好!反复输出是因为同学在获取学校名称时使用了//,应该使用./。//指

匹配返回整个内容中所有符合的元素,而 ./ 是在当前节点下面进行选择,即当前item下进行匹配。同学可做如下更改:

https://img.mukewang.com/climg/62cf7c6e09962d6413100758.jpg
祝学习愉快~

0

0 学习 · 4469 问题

查看课程