gpt4 book ai didi

Python相当于完整的网页下载

转载 作者:行者123 更新时间:2023-11-28 21:48:54 24 4
gpt4 key购买 nike

我正在尝试创建一个基本的抓取工具,用于从 Soundcloud 上的搜索中抓取用户名和歌曲标题。通过检查我需要的元素(使用 Chrome),我发现我需要找到与标题为“soundTitle__usernameText”的每个标签“span”相关联的字符串。使用 BeautifulSoupurllib2lxml,我有以下用于搜索“robert delong”的代码:

from lxml import html
from bs4 import BeautifulSoup
from urllib2 import urlopen
import requests

def search_results(url):
html = urlopen(url).read()
# html = requests.get(url) I've tried this also
soup = BeautifulSoup(html, "lxml")
usernames = [span.string for span in soup.find_all("span", "soundTitle__usernameText")]
return usernames

print search_results('http://soundcloud.com/search?q=robert%20delong')

这将返回一个空列表。但是,当我通过选择"file">“保存”>“格式-网页,完整”在 Chrome 上保存完整网页,并使用该关联的 HTML 文件而不是使用 urlopen 获得的文件时,代码会打印

[u'Two Door Cinema Club', u'whatever-28', u'AWOLNATION', u'Two Door Cinema Club', u'Sean Glass', u'Capital Cities', u'Robert DeLong', u'RAC', u'JR JR']

这是理想的结果。在我看来,urlopen 使用略微截断的 HTML 代码来进行搜索,这就是它返回空列表的原因。

关于如何访问通过手动保存网页但使用 Python/终端获得的相同 HTML,有什么想法吗?谢谢。

最佳答案

你猜对了。下载的 HTML 不包含所有数据。 Javascript 用于请求 JSON 格式的信息,然后将其插入到文档中。

通过查看 Chrome 发出的请求 (ctrl+shift+i, "Network"),我看到它请求了 https://api-v2.soundcloud.com/search?q=robert%20delong。我相信对此的回应包含您需要的信息。

其实,这对你有好处。阅读 JSON 应该比解析 HTML 更直接;)

关于Python相当于完整的网页下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34451706/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com