python - 使用 scrapy 进行网页抓取:空结果
问题描述
我正在学习如何使用 scrappy,我想从这个网站提取一些 youtube 视频链接。我编写了这个脚本来将网站中的链接提取到 json 文件中。
import scrapy
class getVideos(scrapy.Spider):
name = 'wbScraper'
start_urls = ['https://research.google.com/audioset///eval/baby_cry_infant_cry.html']
def parse(self, response):
for url in response.xpath("//div[@class='thumbnail_container']"):
yield {
'video_url': url.xpath(".//div[@class='u']").extract_first()
我只是得到一个空的回复(如下图所示)。我在另一个网站上试过,效果很好,这是第二个结果。 结果
你能帮我解决这个问题吗?xpath 似乎是正确的......
解决方案
视频不在原始请求的 html 中。相反,在加载视频的第一页之后发出第二个请求。
好消息是视频的 URL 很容易找到,而且结果格式很简单。该文件包含 YouTube 视频 ID 和视频标签。
https://storage.googleapis.com/audioset_website_data/youtube_corpus/v1/eval/baby_cry_infant_cry/1.js
这是来自该 URL 的文件的示例。
["2TV2DW0bzBg", 0.0, 8.0, [["Baby cry, infant cry", "baby_cry_infant_cry"]]],
["2eWobSpugTw", 17.0, 27.0, [["Baby cry, infant cry", "baby_cry_infant_cry"]]],
["2fKgYlCx_As", 26.0, 36.0, [["Crying, sobbing", "crying_sobbing"], ["Speech", "speech"], ["Baby cry, infant cry", "baby_cry_infant_cry"]]],
["3KwulXmBX-8", 30.0, 40.0, [["Baby cry, infant cry", "baby_cry_infant_cry"]]],
["4KxLSx-EhHI", 0.0, 9.0, [["Speech", "speech"], ["Baby cry, infant cry", "baby_cry_infant_cry"]]],
推荐阅读
- python - 使用 TensorFlow Eager Execution 和 tf.keras 时警告“试图解除分配 nullptr”
- django - 使用 sorl_thumbnail 从 x 和 y 位置裁剪图像
- c++ - C++ 选择文件夹,包含文件
- angular - 通过 filter 方法渲染 html 组件
- java - 如何从 Java Functions Worker 获取 Java 堆?
- python - 在 pandas 数据框中形成大词组
- node.js - 如何在 NodeJS 上使用本机 Ajax 通过 Post 请求发送对象
- sql-server - 将具有复合主键引用的列添加到分层表
- r - 删除 Y 轴标题后图表发生变化
- symfony - FOSOAuthServerBundle + Amazon Alexa:如何使用 Access Token 手动验证用户身份?