Как в цикле делать POST запрос на Python?
Код:
with open('all_links.txt', 'r') as f:
lines = [line.strip() for line in f.readlines()]
companys = []
time.sleep(1)
for line in lines:
response = requests.post(post_url, cookies=cookies, headers=headers, data=data).text
print(response)
Как видно на скринах, при нажатии на кнопку "показать номер", создается POST запрос, ответом на который получаем номер. Вопрос в том, как в цикле создавать этот запрос, чтоб id был соответсвенно карточки, т.е. менялся с каждым обращением на новую карточку организации. Вот урл страницы, в ней указан этот id: https://5140.org/fop/**965385**-osipchuk-sergij-vitalijovich
Состветственно, в адресе другой карточки, другой id и тд. Может как-то из адреса можно взять и отправлять как id в data. Помогите.
Ответы (1 шт):
Автор решения: AnKus
→ Ссылка
Решение найдено. Если кому интересно, вот код:
import time
import requests
from datas import headers, cookies # заголовки и куки сохранены в отдельном файле
from bs4 import BeautifulSoup
import re
post_url = 'https://5140.org/fops/request' # адрес, куда уходит POST запрос
with open('all_links.txt', 'r') as f:
lines = [line.strip() for line in f.readlines()]
# companys = []
time.sleep(1)
for line in lines:
try:
q = requests.get(line, headers=headers)
except requests.ConnectionError as e:
continue
result = q.content
soup = BeautifulSoup(result, 'lxml')
time.sleep(1)
# Получаем id из адресной строки:
idn = str(soup.find('span', {'itemprop': 'item'}).get('itemid')).replace('5140', '')# Обрезаем ненужный элемент
x = ''.join(re.findall('[0-9]+', idn))# вычленяем число(id), преобразуем в строку и создаем переменную
response = requests.post(post_url, cookies=cookies, headers=headers, data=
{'data_type': 'phone', 'item_id': {x}}).text # отправляем POST запрос, в значение data отправляем переменную 'x'
print(response)
if __name__ == "__main__":
pass




