Не создается файл с данными при парсинге сайта - Python

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. #!/usr/bin/env python3.6
  2. # _*_ coding:utf-8 _*_
  3. import requests
  4. from bs4 import BeautifulSoup
  5. import csv
  6. def get_html(url):
  7. r = requests.get(url)
  8. return r.text
  9. def get_total_pages(html):
  10. soup = BeautifulSoup(html, 'lxml')
  11. pages = soup.find('div', class_='pagination-pages').find_all('a', class_='pagination-page')[-1].get('href')
  12. total_pages = pages.split('=')[1].split('&')[0]
  13. return int(total_pages)
  14.  
  15. def write_csv(data):
  16. with open('avito.csv', 'a') as f:
  17. writer = csv.writer(f)
  18. writer.writerow((data['title'],
  19. data['price'],
  20. data['address'],
  21. data['time'],
  22. data['url']))
  23. def get_page_data(html):
  24. soup = BeautifulSoup(html, 'lxml')
  25. ads = soup.find('div', class_='catalog-list').find_all('div', class_='item_table')
  26. for ad in ads:
  27. #title, price, address, time, url
  28. try:
  29. title = ad.find('div', class_='description').find('h3').text.strip()
  30. except:
  31. title = ''
  32. try:
  33. url = 'https://www.avito.ru' + ad.find('div', class_='description').find('h3').find('a').get('href')
  34. except:
  35. url = ''
  36. try:
  37. price = ad.find('div', class_='about').text.strip()
  38. except:
  39. price = ''
  40. # try:
  41. # metro =
  42. try:
  43. address = ad.find('p', class_='address').text.strip()
  44. except:
  45. address = ''
  46. try:
  47. time = ad.find('div', class_='data').find('div', class_='date').text.strip()
  48. except:
  49. time = ''
  50. data = {'title': title,
  51. 'price': price,
  52. 'address': address,
  53. 'time': time,
  54. 'url': url}
  55. write_csv(data)
  56.  
  57. def main():
  58. url = 'https://www.avito.ru/novosibirsk/kvartiry/sdam/na_dlitelnyy_srok/1-komnatnye?p=1&i=1&pmax=14000&user=1'
  59. base_url = 'https://www.avito.ru/novosibirsk/kvartiry/sdam/na_dlitelnyy_srok/1-komnatnye?'
  60. page_part = 'p='
  61. query_part = '&i=1&pmax=14000&user=1'
  62. total_pages = get_total_pages(get_html(url))
  63. for i in range(1, total_pages+1):
  64. url_gen = base_url + page_part + str(i) + query_part
  65. #print(url_gan)
  66. html = get_html(url_gen)
  67. get_page_data(html)
  68.  
  69. if __name__ == '__main__':
  70. main()
Сделал по уроку на ютюбе, ошибку не выдает, но файл с данными не создает. Помогите люди добрые, получить результаты. Да и понять в чем ошибка хочется.

Решение задачи: «Не создается файл с данными при парсинге сайта»

textual
Листинг программы
  1. with open('avito.csv', 'a', encoding='utf-8') as f:

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут