То, что я пытаюсь сделать здесь:
Я пытаюсь просканировать визг и получить отзывы с конкретной страницы. Тем не менее, я просто хочу изменить этот сценарий, чтобы дать имя "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)
Пожалуйста, предложите мне эту проблему и как я могу это исправить.
С Уважением,
Чтобы прочитать аргументы из командной строки, вы можете использовать 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: вход пользователя и аргументы командной строки
"dennys-san-jose-5"
и он добавляется в конец URL("http://www.yelp.com/biz/"+Query+)
как в java? Извините я новичок в питонеimport sys stringQ = sys.argv[1] page = urlopen('http://www.yelp.com/biz/' + stringQ)
и все заработало !! Это правильный путь?