Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python urllib.urlopen()对指定了字符串值的变量无效吗?_Python_Xml Parsing_Urllib - Fatal编程技术网

Python urllib.urlopen()对指定了字符串值的变量无效吗?

Python urllib.urlopen()对指定了字符串值的变量无效吗?,python,xml-parsing,urllib,Python,Xml Parsing,Urllib,我正在写一些代码来解析XML文件。我只是想知道是否有人能解释为什么这不起作用。如果我将link本身放入urllib.urlopen(),它似乎无法到达该url。然而,当我把放在http://gdata.youtube.com/feeds/api/standardfeeds/top_rated?max-results=50&time=today“在urllib.urlopen()内部,它可以工作。它需要是一个字符串而不是一个变量,还是有办法绕过它 import urllib from bs4 im

我正在写一些代码来解析XML文件。我只是想知道是否有人能解释为什么这不起作用。如果我将
link
本身放入
urllib.urlopen()
,它似乎无法到达该url。然而,当我把
放在http://gdata.youtube.com/feeds/api/standardfeeds/top_rated?max-results=50&time=today“
urllib.urlopen()
内部,它可以工作。它需要是一个字符串而不是一个变量,还是有办法绕过它

import urllib
from bs4 import BeautifulSoup

class Uel(object):
    def __init__(self, link):
        self.content_data = []  
        self.num_likes = []
        self.num_dislikes = []
        self.favoritecount = []
        self.view_count = []
        self.link = link
        self.web_obj = urllib.urlopen(link)
        self.file = open('youtubequery.txt', 'w+')
        self.file.write(str(self.web_obj))
        for i in self.web_obj:
            self.file.write(i)
        with open("youtubequery.txt", "r") as myfile:
            self.file_2=myfile.read()
            self.soup = BeautifulSoup(self.file_2)

        for link in self.soup.find_all("content"):
            self.content_data.append(str(link.get("src")))

        for stat in self.soup.find_all("yt:statistics"):
            self.favoritecount.append(str(stat.get("favoritecount")))

        for views in self.soup.find_all("yt:statistics"):
            self.view_count.append(str(views.get("viewcount")))

        for numlikes in self.soup.find_all("yt:rating"):
            self.num_likes.append(str(numlikes.get("numlikes")))

        for numdislikes in self.soup.find_all("yt:rating"):
            self.num_dislikes.append(str(numdislikes.get("numdislikes")))


    def __str__(self):
        return str(self.content_data),str(self.num_likes), str(self.num_dislikes)

link = "http://gdata.youtube.com/feeds/api/standardfeeds/top_rated?max- results=50&time=5"
data = Uel(link)
print data.__str__()

在您展示的代码中,您使用的是以下url:

http://gdata.youtube.com/feeds/api/standardfeeds/top_rated?max- results=50&time=5
产生以下结果的请求:

Invalid value for time parameter: 5
但是,在问题本身中,您提到了以下URL:

http://gdata.youtube.com/feeds/api/standardfeeds/top_rated?max- results=50&time=today
它有
time=today
。带有此URL的代码对我很有用