老师 我抓取了别的网站 但是为什么会反复输出这么多次呢? 获取到的换行符该怎么屏蔽掉
来源: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