@AnKus

Результат POST запроса не записывается в файл. Как решить?

Написал небольшой код, чтоб распарсить сайт, который требует авторизации, а так же показывает информацию по нажатию на кнопку, в частности "Показать номер". Проблема в том, что номер, который получаю по 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


Скриншот фрагмента кода удален модератором.
  • Вопрос задан
  • 157 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы