Парсинг сайта 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()