parser-pikabu.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from bs4 import BeautifulSoup
  2. import requests
  3. import sys
  4. f = open("pikabu.txt", 'w')
  5. f.write("В этом файле результаты поиска по тегам Пикабу.\n")
  6. f.close()
  7. search_words = input('Что хотите найти на Пикабу?\n')
  8. limit_page = int(input("Сколько страниц пролистать?\n"))
  9. search_words_plus = search_words.replace(' ', '+')
  10. user_agent = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
  11. 'Chrome/89.0.4389.72 Safari/537.36'}
  12. if limit_page < 1:
  13. sys.exit("Неверное число страниц поиска")
  14. for i in range(1, limit_page + 1):
  15. if requests.get('https://pikabu.ru/tag/' + search_words, params={'st': 3, 't': search_words_plus, 'page': i}, headers=user_agent).status_code == 200:
  16. parsed_pikabu = BeautifulSoup(requests.get('https://pikabu.ru/tag/' + search_words, params={'st': 3, 't': search_words_plus, 'page': i}, headers=user_agent).text, "html.parser")
  17. text = parsed_pikabu.select('.story-block_type_text')
  18. print("Ищем на странице, номер: ", i)
  19. for el in text:
  20. f = open("pikabu.txt", 'a')
  21. str_spam = str(el)
  22. if str_spam.find("from=cpm") != -1 or str_spam.find("href") != -1 or str_spam.find("***") != -1 or str_spam.find("еклама") != -1 or str_spam.find("...") != -1:
  23. continue
  24. str1 = el.get_text()
  25. if len(str1) < 20 or "акция" in str1 or "подарок" in str1 or "купить" in str1 or "скидки" in str1 or "наушник" in str1 or "сертификат" in str1:
  26. continue
  27. f.write(str1)
  28. f.close()
  29. if requests.get('https://pikabu.ru/tag/' + search_words, {'st': 3, 't': search_words_plus, 'page': i}, headers=user_agent).status_code != 200:
  30. print("Сервер вернул код ошибки: ", requests.get('https://pikabu.ru/tag/' + search_words, params={'st': 3, 't': search_words_plus, 'page': i}, headers=user_agent).status_code)
  31. def delete_string():
  32. File = open("pikabu.txt", 'r')
  33. str_list = []
  34. for i in File.readlines():
  35. if i not in str_list:
  36. str_list.append(i)
  37. File.close()
  38. File = open("pikabu.txt", 'w')
  39. for j in str_list:
  40. File.write(j + '\n')
  41. delete_string()
  42. print('Записано в файл "pikabu.txt"')
  43. print("Поиск завершился")