老师 我抓取了别的网站 但是为什么会反复输出这么多次呢? 获取到的换行符该怎么屏蔽掉
来源: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://www.shanghairanking.cn/rankings/bcur/2022
1回答
同学,你好!反复输出是因为同学在获取学校名称时使用了//,应该使用./。//指
匹配返回整个内容中所有符合的元素,而 ./ 是在当前节点下面进行选择,即当前item下进行匹配。同学可做如下更改:

祝学习愉快~
相似问题
回答 1
回答 1
回答 1
回答 1
回答 1