Как решить проблему с кодом парсера?
Вот такой код есть :
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 = ''
# print(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}}) # отправляем POST запрос, в значение data отправляем переменную 'x'
for t in phone: # парсим результат ответа на запрос
n = phone.content
tel = BeautifulSoup(n, 'lxml').text # это значение пишется в файл
# print(name, tel)
company = {
'name': name,
'tel': tel,
}
companys.append(company)
with open('companys.csv', 'w', newline='') as file:
writer = csv.writer(file, delimiter=',', lineterminator='\r')
writer.writerow(['Name', 'Tel'])
for company in tqdm(companys):
writer.writerow(
[company['name'], company['tel']])
if __name__ == "__main__":
pass
Выдает ошибку:
requests.exceptions.MissingSchema: Invalid URL '': No scheme supplied. Perhaps you meant http://?
в строке q = requests.get(line, headers=headers)
При этом отдельные куски кода отрабатывают. Этот кусок выдает корректрую информацию в консоль:
# Получаем 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}}) # отправляем POST запрос, в значение data отправляем переменную 'x'
for t in phone: # парсим результат ответа на запрос
n = phone.content
tel = BeautifulSoup(n, 'lxml').text # это значение пишется в файл
# print(name, tel)
Следовательно, ошибка возникает при попытке записать в файл. Как решить эту проблему ?