我正试图从该站点使用PHP抓取信息,但是我正在寻找的信息似乎是通过Javascript或类似方法生成的。对于采用哪种方法的任何建议,我将不胜感激!
这是我试图从以下站点获取数据的远程站点:http://www.riksdagen.se/sv/webb-tv/video/debatt-om-forslag/yrkestrafik-och-taxi_H601TU11
该页面包含一个视频,并且标题为“Anförandelista”,在视频中有许多指向各个时间点的名称/链接。
我想使用PHP自动获取此列表中的名称和链接并将其存储在数据库中。但是,此信息未包含在HTML源代码中,因此我无法检索它。
关于如何使用自动化脚本远程访问信息的任何想法?还是应该朝哪个方向寻找解决方案?非常感谢任何指针。
答案 0 :(得分:1)
您可以从页面调用的API中以JSON响应的形式获取此信息。我还不知道PHP,但是Google可以快速显示处理json是可能的,而且非常简单。我在底部给出了一个python脚本示例。
API调用是这个
http://www.riksdagen.se/api/videostream/get/H601TU11
它返回json如下(仅显示摘录。json还包括语音):
探索完整的json响应here。
PHP
看看this question,您可以从类似以下内容开始:
$array = json_decode(file_get_contents('http://www.riksdagen.se/api/videostream/get/H601TU11'));
示例Python(如果需要)
import requests
import pandas as pd
r = requests.get('http://www.riksdagen.se/api/videostream/get/H601TU11').json()
results = []
for item in r['videodata'][0]['speakers']:
start = item['start']
duration = item['duration']
speaker = item['text']
row = [speaker, start, duration]
results.append(row)
df = pd.DataFrame(results, columns = ['Speaker', 'Start', 'Duration'])
print(df)
示例输出:
答案 1 :(得分:0)
仅使用PHP解决方案无法获得JS加载的信息。 Curl,file_get_contents和类似选项仅会为您获取服务器响应,它们不会执行JS,因为它是客户端脚本。
为此,您将需要使用无头浏览器(有多种选择:Chromium,具有新的无头模式的Google Chrome或Selenium网络驱动程序只是最受欢迎的几种)