Ввод командной строки для скрипта Python

0

То, что я пытаюсь сделать здесь:

Я пытаюсь просканировать визг и получить отзывы с конкретной страницы. Тем не менее, я просто хочу изменить этот сценарий, чтобы дать имя "Restaurant name" в качестве входного.

Например:

Вход пользователя: dennys-san-jose-5

URL: http://www.yelp.com/biz/**dennys-san-jose-5**

Это фактический скрипт, который я использую прямо сейчас:

from bs4 import BeautifulSoup
from urllib import urlopen
queries = 0
while queries <201:
    stringQ = str(queries)
    page = urlopen('http://www.yelp.com/biz/madison-square-park-new-york?start=' + stringQ)

    soup = BeautifulSoup(page)
    reviews = soup.findAll('p', attrs={'itemprop':'description'})
    authors = soup.findAll('span', attrs={'itemprop':'author'})

    flag = True
    indexOf = 1
    for review in reviews:
        dirtyEntry = str(review)
        while dirtyEntry.index('<') != -1:
            indexOf = dirtyEntry.index('<')
            endOf = dirtyEntry.index('>')
            if flag:
                dirtyEntry = dirtyEntry[endOf+1:]
                flag = False
            else:
                if(endOf+1 == len(dirtyEntry)):
                    cleanEntry = dirtyEntry[0:indexOf]
                    break
                else:
                    dirtyEntry = dirtyEntry[0:indexOf]+dirtyEntry[endOf+1:]
        f=open("reviews.txt", "a")
        f.write(cleanEntry)
        f.write("\n")
        f.close

    for author in authors:
        dirty = str(author)
        closing = dirty.index('>')
        dirty = dirty[closing+1:]
        opening = dirty.index('<')
        cleanEntry = dirty[0:opening]
        f=open("bla.txt", "a")
        f.write(cleanEntry)
        f.write("\n")
        f.close 
    queries = queries + 40

Я пытаюсь прочитать имя ресторана как параметр, но это не работает.

Что я сделал:

while queries <201:
    stringQ = str(queries)
    page = urlopen('http://www.yelp.com/biz/' + stringQ)

Но это не работает. Я даю dennys-san-jose-5 в качестве входных данных из командной строки (python script.py dennys-san-jose-5)

Пожалуйста, предложите мне эту проблему и как я могу это исправить.

С Уважением,

Теги:
beautifulsoup
yelp

1 ответ

2
Лучший ответ

Чтобы прочитать аргументы из командной строки, вы можете использовать argparse.

import argparse

#Define command line arguments
parser = argparse.ArgumentParser(description='Get Yelp reviews.')
parser.add_argument("-p", "--page", dest="page", required=True, help="the page to parse")

#parse command line arguments
args = parser.parse_args()

Теперь имя вашей страницы будет находиться на args.page. В этом примере вы запускаете скрипт следующим образом:

>python script.py  -p dennys-san-jose-5

или

>python script.py --page dennys-san-jose-5


Редактировать:

  • Если вам не нужны какие-либо причудливые вещи, и просто хотите ввести исходную командную строку (например, в программе, которую вы будете использовать, нет необходимости проверять ввод и т.д.):

    import sys
    print sys.argv
    
  • Если вы хотите пригласить пользователя для имени страницы при запуске программы: Python: вход пользователя и аргументы командной строки

  • 0
    Спасибо за ваш комментарий. В любом случае я мог бы передать его напрямую, не используя -p или еще что-нибудь? Например, в java я не могу передать "dennys-san-jose-5" и он добавляется в конец URL ("http://www.yelp.com/biz/"+Query+) как в java? Извините я новичок в питоне
  • 0
    Чтобы добавить к моему комментарию, я использовал sys. import sys stringQ = sys.argv[1] page = urlopen('http://www.yelp.com/biz/' + stringQ) и все заработало !! Это правильный путь?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню