Парсинг сайта BeautifulSoup - Python
Формулировка задачи:
Самостоятельно занимаюсь изучением языка Python.
Решил написать примитивный парсер сайта, используя библиотеку BeautifulSoup, мало того это код из видеоурока.
и получаю такой эксепт:
Понятно что, что то с кодировкой, но не ясно, как победить, гугл не дал результатов.
UPD: Пока сам придумал обходной маневр обозвав переменную str типом данных.
Решение задачи: «Парсинг сайта BeautifulSoup»
textual
Листинг программы
# -*- coding: utf-8 -*- import urllib.request from bs4 import BeautifulSoup import premailer import logging def get_html(url): response = urllib.request.urlopen(url) return response.read() def parse(html): soup = BeautifulSoup(html, 'html.parser') head = soup.find('head') table = soup.find('div', {"class": "Search-list"}) result_html = premailer.Premailer('<html>' + str(head) + '<body>' + str(table) + '</body></html>', cssutils_logging_level=logging.CRITICAL).transform() with open('result.html', 'w') as f_obj_out: f_obj_out.write(result_html) send_mail() def send_mail(): import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText fromaddr = "your_gmail_account" toaddr = "address_to_send_to" mypass = "your_gmail_password" msg = MIMEMultipart() msg['From'] = fromaddr msg['To'] = toaddr msg['Subject'] = "your_desired_subject" with open('result.html') as f_obj: body = f_obj.read() msg.attach(MIMEText(body, 'html')) server = smtplib.SMTP('smtp.gmail.com', 587) server.starttls() server.login(fromaddr, mypass) text = msg.as_string() server.sendmail(fromaddr, toaddr, text) server.quit() def main(): parse(get_html('https://www.fabrikant.ru/trades/procedure/search/')) if __name__ == "__main__": main()
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д