Написал небольшой код, чтоб распарсить сайт, который требует авторизации, а так же показывает информацию по нажатию на кнопку, в частности "Показать номер". Проблема в том, что номер, который получаю по POST запросу не пишется в CSV файл, хотя в консоль выводится. Как записать это значение ? Вот сам код:
import csv
import json
import time
import requests
from datas import headers, cookies # заголовки и куки сохранены в отдельном файле
from bs4 import BeautifulSoup
import re
from tqdm import tqdm
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)
try:
name = soup.find('div', {'class': 'pull-md-left'}).find_next('h1').text
except AttributeError:
name = ''
# Получаем id из адресной строки:
idn = str(soup.find('span', {'itemprop': 'item'}).get('itemid')).replace('5140', '')# Обрезаем ненужный элемент
x = ''.join(re.findall('[0-9]+', idn))# вычленяем число(id), преобразуем в строку и создаем переменную
phone = requests.post(post_url, cookies=cookies, headers=headers, data=
{'data_type': 'phone', 'item_id': {x}}).text # отправляем POST запрос, в значение data отправляем переменную 'x'
print(name, phone)
# company = {
# 'name': name,
# 'phone': phone,
# }
#
# companys.append(company)
#
# with open('companys.csv', 'w', newline='') as file:
# writer = csv.writer(file, delimiter=',', lineterminator='\r')
# writer.writerow(['Name', 'Phone'])
# for company in tqdm(companys):
# writer.writerow(
# [company['name'], company['phone']])
if __name__ == "__main__":
pass
Скриншот фрагмента кода удален модератором.