使用Python下载链接

时间:2013-11-23 20:26:20

标签: 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.bbc.co.uk')
    if len(sys.argv) != 2:
        print '[-] Usage: webpage_get URL'
        return
    else:
        print getWebpage(sys.argv[1])

if __name__ == '__main__':
    main()

链接脚本

import sys, urllib, re
import getWebpage
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.bbc.co.uk')
    if len(sys.argv) != 2:
        print '[-] Usage: webpage_links URL'
        return
    page = webpage_get.getWebpage(sys.argv[1])
    print_links(page)

2 个答案:

答案 0 :(得分:1)

这将解决您的大部分问题:

import sys, urllib, re

def getWebpage(url):
    print '[*] getWebpage()'
    url_file = urllib.urlopen(url)
    page = url_file.read()
    return page

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():
    site = 'http://www.bbc.co.uk'
    page = getWebpage(site)
    print_links(page)

if __name__ == '__main__':
    main()

然后你可以继续修复正则表达式。

虽然我们讨论这个话题,但我有两个重要建议:

答案 1 :(得分:0)

你的正则表达式没有结束,所以当你找到第一个时它会显示你整个页面的其余部分,因为你使用http \:。+这意味着返回所有内容:直到html的结尾您需要指定正则表达式的结尾

的页面