使用Python从WebPage下载

时间:2013-11-22 13:51:22

标签: python parsing webpage downloading

我是一个python新手我正在尝试做的是创建两个脚本。一个下载网页信息和下载链接的另一个脚本,并输出下载到列表中的链接总数的摘要。

第一个脚本(下载网页)

import sys, urllib
def getWebpage(url):
    print '[*] getWebpage()'
    url_file = urllib.urlopen(url)
    page = url_file.read()
    return page
def main():
    sys.argv.append('http://www.funeralformyfat.tumblr.com)
    if len(sys.argv) != 2:
        print '[-] Usage: webpage_get URL'
        return
    else:
        print getWebpage(sys.argv[1])

if __name__ == '__main__':
    main()

第二个脚本(下载链接并输出下载到列表中的链接总数的摘要。)

    import sys, urllib
def print_links(page):
    print '[*] print_links()'
    links = re.findall(r'\<a.*href\=.*http\:.+', page)
    links.sort()
    print '[+]', str(len(links)), 'HyperLinks Found:'

    for link in links:
        print link

def main():
    sys.argv.append('http://www.funeralformyfat.tumblr.com')
    if len(sys.argv) != 2:
        print '[-] Usage: webpage_links URL'
        return
        page = webpage_get.getWebpage(sys.argv[1])
        print_links(page)


if __name__ == '__main__':
    main()

我的代码运行但它不返回任何链接。任何人都可以看到这个问题吗?

1 个答案:

答案 0 :(得分:0)

print getWebpage(sys.argv[1]) <---- IndexError: list index out of range

sys.argv尚未更新(附加内容位于main函数中,其中尚未已被调用)

你应该尝试以下&amp;看到为自己工作。

import sys, urllib
def getWebpage(url):
    print '[*] getWebpage()'
    url_file = urllib.urlopen(url)
    page = url_file.read()
    return page
def main():
    sys.argv.append('http://www.funeralformyfat.tumblr.com')
    if len(sys.argv) != 2:
        print '[-] Usage: webpage_get URL'
        return
    else:
        print getWebpage(sys.argv[1])

if __name__ == '__main__':
    main()


NameError: name 'links' is not defined

这是因为您在定义该变量的函数之外有scoped links列表。正确的缩进将是

def print_links(page):
    print '[*] print_links()'
    links = re.findall(r'\<a.*href\=.*http\:.+', page)
    links.sort()
    print '[+]', str(len(links)), 'HyperLinks Found:'

    for link in links:
        print link