我正在尝试创建一个脚本,我可以从https://www.youtube.com/feed/subscriptions解析源代码并检索订阅源中视频的网址,以便将它们粘贴到MP4下载中并保存到我的FTP服务器。
但是我在这个问题上坚持了几个小时。
datetime
我右键单击css元素和'inspect element'然后'copy selector'并将其粘贴到select方法中。
如您所见,它不断返回一个空列表。
我尝试了许多不同的衍生物,但它没有采取任何措施。我在主页上做同样的事情时遇到了同样的问题,因此我怀疑是因为它是在登录后面(虽然我登录了运行脚本的PC)。
有人可以指出正确的方向吗?
答案 0 :(得分:1)
您正面临着两个不同的(但不知何故相关)问题:
服务器返回到您的代码发送的GET reguest的页面可能与您使用浏览器转到页面时收到的页面不同,因为用户代理程序未知服务器。
您正在寻找的商品只有在您登录后才能看到。
现在,您应该考虑使用YouTube API,而不是手动处理这两个问题。
演示代码显示我们为不同的用户代理获取了不同的页面:
import requests
python_user_agent_request = requests.get('http://www.youtube.com')
chrome_user_agent_request = requests.get('http://www.youtube.com',
headers={'user-agent':'''Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'''})
print(python_user_agent_request.request.headers['user-agent'])
>> python-requests/2.7.0 CPython/3.4.2 Windows/7
print(chrome_user_agent_request.request.headers['user-agent'])
>> Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36
# .text holds the HTML page source
print(python_user_agent_request.text == chrome_user_agent_request.text)
>> False