乐趣区

关于xpath:解决-xpath遇到特殊符号匹配不全信息的问题

这个问题是我之前的一个发问 通过了两三天的钻研终于解决了
背景:

import requests
from lxml import etree

    url = "https://music.163.com/discover/toplist?id=3779629"
    headers = {'User-Agent': "PostmanRuntime/7.15.2",}
    response = requests.request("GET", url, headers=headers)

    '''”<”、”&”'''
    r = etree.HTML(response.text)

    l = r.xpath("//textarea[@id='song-list-pre-data']/text()")

    print(l)

最终输入(支只复制了最初一段):
lLevel”:”exhigh”,”pl”:320000},”djid”:0,”fee”:0,”album”:{“id”:158052587,”name”:”Sakana~( ˵>ㅿㅿ\n’]
失常来说 这个 xpath 语句 是匹配到一个残缺的 json 模式数据 然而遇到了特殊符号 就在特殊符号处匹配完结了 导致信息拿不全


解决办法:
应用 bs4 解析包(由查阅相干材料,stackoverflow 网评 bs4 比 xpath 在某些非凡场景更强壮)

并且留神 soup = BeautifulSoup(response.text, “lxml”)

的参数肯定不要应用 lxml 要应用 html.parser

最终代码:

import requests
from bs4 import BeautifulSoup

url = "https://music.163.com/discover/toplist?id=3779629"
headers = {'user-agent': "PostmanRuntime/7.15.2"}
response = requests.request("GET", url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")
textarea = soup.find('textarea', attrs={'id': 'song-list-pre-data'}).get_text()
print(textarea)

最终输入能够拿到残缺的 str 用于 json 化

退出移动版