【问题标题】:Creating Lists in Python在 Python 中创建列表
【发布时间】:2011-12-07 20:05:36
【问题描述】:

我可以解析一个看起来像这样的文件:

<a href="http://www.youtube.com/watch?v=DpQNMBzwShs"></a>

但是当我给它的时候:

http://www.youtube.com/watch?v=DpQNMBzwShs

它出错了。

如何将soup 变成一个完全跳过# extract youtube video urls 进程的列表,这是我认为我需要做的?

# parse bookmarks.html
with open(sys.argv[1]) as bookmark_file:
    soup = BeautifulSoup(bookmark_file.read())

# extract youtube video urls
video_url_regex = re.compile('http://www.youtube.com/watch')
urls = [link['href'] for link in soup('a', href=video_url_regex)]

# extract video ids from the urls
ids = []
for video_url in urls:
    url = urlparse.urlparse(video_url)
    video_id = urlparse.parse_qs(url.query).get('v')
    if not video_id: continue # no video_id in the url
    ids.append(video_id[0])

当我 print soup 它给了我一个 url 列表,我认为我可以使用现有代码和 urls = soup 提取视频 ID,但是当我这样做时它说我只有 1 个 url。

谢谢

【问题讨论】:

    标签: python list youtube youtube-api beautifulsoup


    【解决方案1】:

    您的问题——事实上——令人费解:beautifulsoup 用于解析 XML 树,但您似乎试图解析一个简单的文本文件?

    如果是这种情况,假设文件每行有一个 URL,您只需逐行加载它并将其内容分配给 urls

    urls = open('<your-filename-here>').readlines()
    

    那么您可以简单地使用已有的循环:

    # extract video ids from the urls
    ids = []
    for video_url in urls:
        url = urlparse.urlparse(video_url)
        video_id = urlparse.parse_qs(url.query).get('v')
        if not video_id: continue # no video_id in the url
        ids.append(video_id[0])
    

    ...但也许我误解了你?

    【讨论】:

    • 就是这样!!我还在开始,这真的很有帮助,谢谢。不确定我是否应该在此处发布此内容,但是当我进行更改时,我现在遇到了另一个错误。
    • 我开始了一个新问题here 谢谢@mac
    猜你喜欢
    • 2018-10-12
    • 1970-01-01
    • 2018-08-01
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 2018-06-09
    相关资源
    最近更新 更多