【问题标题】:Unable to parse some information from a webpage using search keywords无法使用搜索关键字解析网页中的某些信息
【发布时间】:2020-02-22 03:10:22
【问题描述】:

我创建了一个脚本来解析与网站上的某些歌曲相关的一些信息。当我尝试使用this link 或this one 时,我的脚本可以完美运行。我能理解的是,当我在这部分https://www.billboard.com/music/ 之后附加我的搜索关键字时,我得到了包含信息的所需页面。

但是,当我尝试使用这些关键字 1 Of The Girls 或 Al B. Sure! 或 Ashford & Simpson 等时,出现了问题。

我不知道如何在基本链接https://www.billboard.com/music/ 之后附加上述关键字来定位包含信息的页面。

我尝试过的脚本:

import requests
from bs4 import BeautifulSoup

LINK = "https://www.billboard.com/music/Adele"

res = requests.get(LINK)
soup = BeautifulSoup(res.text,"lxml")
scores = [item.text for item in soup.select("[class$='-history__stats'] > p > span")]
print(scores)

我得到的结果(如预期的那样):

['4 No. 1 Hits', '6 Top 10 Hits', '13 Songs']

位于该页面的结果就在chart history 之后,如下所示:

如何使用关键搜索关键字从网页中获取一些信息?

【问题讨论】:

  • URL 可能需要使用某种编码,例如I%27ll+be+damned 或Ashford+%26+Simpson。在直播网站上进行实验,然后搜索urlencode。

标签: python python-3.x web-scraping


【解决方案1】:

我不知道所有用例,但我看到的明显模式是,特殊字符被去掉(不留空白),单词是小写的,然后用“-”替换空格.棘手的部分可能是特殊字符的定义和处理。

例如

https://www.billboard.com/music/ashford-simpson

https://www.billboard.com/music/al-b-sure

https://www.billboard.com/music/1-of-the-girls

您可以先编写一些东西来执行这些字符串操作,然后测试响应代码。也许看看js文件中是否有任何形式的验证。

编辑:

单词之间的多个空格在被“-”替换之前变成单个空格?

与@Mithu 一起开发的用于准备搜索词的答案:

import re
keywords = ["Y?N-Vee","Ashford & Simpson","Al B. Sure!","1 Of The Girls"]
spec_char = ["!","#","$","%","&","'","(",")","*","+",",",".","/",":",";","<","=",">","?","@","[","]","^","_","`","{","|","}","~",'"',"\\"]

for elem in keywords:
    refined_keywords = re.sub('-+','-' , ''.join(i.replace(" ","-") for i in elem.lower() if i not in spec_char))
    print(refined_keywords)

【讨论】:

  • 感谢您的回复@QHarr。当此搜索关键字 U.N.L.V 导致此链接 https://www.billboard.com/music/unlv 时,事情变得更加混乱
  • 这似乎仍然是因为特殊字符已被删除,并且由于没有空格,因此它被视为单个单词并小写。
  • 如果我继续我现有的逻辑,那么Ashford &amp; Simpson 变成Ashford--Simpson 而我喜欢它是Ashford-Simpson。
  • 单词之间的多个空格在被替换为“-”之前变为单个空格?
  • 我已经踢掉了链接。您应该在您的答案中包含您在 pastebin 中显示的答案,以便它可能对未来的读者有所帮助。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-14
  • 1970-01-01
  • 2018-12-03
  • 1970-01-01
  • 2022-07-06
  • 1970-01-01
  • 2015-10-21
相关资源
最近更新 更多