Taking an argument from user (URL)

2019-08-14 07:32发布

问题:

Does anyone know how I would be able to take the the URL as an argument in Python as page? Just to readline in the script, user inputs into the shell and pass it through as an argument just to make the script more portable?

import sys, re
import webpage_get

def print_links(page): 
     ''' find all hyperlinks on a webpage passed in as input and 
print ''' 
     print '\n[*] print_links()' 

     links = re.findall(r'(\http://\w+\.\w+[-_]*\.*\w+\.*?\w+\.*?\w+\.*[//]*\.*?\w+        [//]*?\w+[//]*?\w+)', page) 
     # sort and print the links 
     links.sort() 
     print '[+]', str(len(links)), 'HyperLinks Found:' 
     for link in links: 
         print link

def main(): 
     # temp testing url argument 
     sys.argv.append('http://www.4chan.org') 

     # Check args 
     if len(sys.argv) != 2: 
         print '[-] Usage: webpage_getlinks URL' 
         return 

     # Get the web page 
     page = webpage_get.wget(sys.argv[1]) 
     # Get the links 
     print_links(page)

if __name__ == '__main__': 
 main() 

回答1:

It looks like you kind of got started with command line arguments but just to give you an example for this specific situation you could do something like this:

def main(url):
        page = webpage_get.wget(url)
        print_links(page)

if __name__ == '__main__':
    url = ""
    if len(sys.argv >= 1):
       url = sys.argv[0]

    main(url)

Then run it from shell like this python test.py http://www.4chan.org

Here is a tutorial on command line arguments which may help your understanding more than this snippet http://www.tutorialspoint.com/python/python_command_line_arguments.htm

Can you let me know if I miss understood your question? I didn't feel to confident in the meaning after I read it.