Python 3 войти на сайт и скачать файл - PullRequest
0 голосов
/ 03 июня 2018

Надеюсь, что кто-то может помочь ... вот так.

Я искал на этом форуме и использовал много ресурсов, но я застрял, заходя на сайт houzz.com.В основном я хочу войти в систему, а затем получить файл CSV, который содержит все заказы.Я использовал тот же код с Amazon, и он работал, но в этом случае здесь не работает, и я получаю следующую ошибку (ошибка 500): Журнал ошибок в houzz

Этокод, который я сейчас использую (некоторые биты находятся в комментариях для отладки, также я настроил все поля данных, анализируя фактический запрос POST, чтобы убедиться, что имена полей и значения были правильными, см. здесь )

import bs4, requests, urllib.request`

session = requests.Session()`

session.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36'}

# Log in to houzz
print('Logging in...')
response = session.get('https://www.houzz.com/signin/')

soup = bs4.BeautifulSoup(response.text, "html.parser")

signin_data = {}
# signin_form = soup.find('form', {'id': 'signinForm'})

# for field in signin_form.find_all('input'):
#     try:
#         signin_data[field['id']] = field['value']
#     except:
#         signin_data[field['id']] = ''

# print(signin_data)
signin_data[u'op'] = 'l'
signin_data[u'un'] = 'myusername'
signin_data[u'pwd'] = 'mypassword'
signin_data[u'rdr'] = 'https://www.houzz.com/'
signin_data[u'k'] = 'y'
signin_data[u'jt'] = 'AwA3yxJb1ahdYi5vieLiK-bK7DeXzEu_Eq8erpWgcOvcrYbzT0g'
signin_data[u'ajaxRequestId'] ='1'
signin_data[u'pageRequestId'] = '194e405c-77db-4de8-b21c-1d960e4af475'
signin_data[u'isResiv'] = 'false'
signin_data[u'__ct'] = 'AwA3yxJb1ahdYi5vieLiK-bK7DeXzEu_Eq8erpWgcOvcrYbzT0g'
signin_data[u'_csrf'] = 'AwA3yxJb1ahdYi5vieLiK-bK7DeXzEu_Eq8erpWgcOvcrYbzT0g'

# print(signin_data)

response = session.post('https://www.houzz.com/authorize', data = signin_data)

soup = bs4.BeautifulSoup(response.text, "html.parser")

# warning = soup.find('div', {'id': 'signinErrors'})

# if warning.text!='':
#     print('Failed to login: {0}'.format(warning.text))
# else :
#     print('Log in Successful')

response = session.get('https://www.houzz.com/browseBuyerOrders/vname=capolavori')
soup = bs4.BeautifulSoup(response.text, "html.parser")
print(soup)

urllib.request.urlretrieve('https://www.houzz.com/downloadOrdersCsv/vName=capolavori/s=all/sib=1', 'houzz_report.csv')

session.close()

Большое спасибо!

...