Я написал парсер, который достаёт всю нужную информацию. Но проблема в том, что email адреса выводятся в виде списка [bogdankurbanov85@gmail.com]. Как мне избавиться от этого? Всё бы ничего, но из-за этого код, который помещает всё в Excel, выдаёт ошибку.
import requests
from bs4 import BeautifulSoup
from time import sleep
from lxml import html
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
" AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"}
email_list = []
def get_url():
for count in range(0,21,20):
url = f"http://www.spisszkol.eu/typ/?wojewodztwo=malopolskie&powiat=krakow&start={count}"
responce = requests.get(url, headers=headers)
responce.encoding = "utf8"
soup = BeautifulSoup(responce.text, "lxml")
data = soup.find_all("div", class_="doc_entry")
for i in data:
card_url = i.find("a").get("href")
yield card_url
def array():
for list_card in get_url():
responce = requests.get(list_card, headers=headers)
responce.encoding = "utf8"
sleep(3)
soup = BeautifulSoup(responce.text, "lxml")
parsed = html.fromstring(responce.text)
emails = [e.attrib['title'] for e in parsed.xpath('//a[contains(@href, "email") and @title]')]
data = soup.find("div", class_="page_body")
name = data.find("p", class_="map_title red").text
adres = data.find("p", itemprop="address").text
telefon = data.find("span", itemprop="telephone").text
yield name, adres, telefon,emails
И также код для вывода в Excel:
import xlsxwriter
from main import array
def writer(parametr):
book = xlsxwriter.Workbook(r"C:\Users\bodga\OneDrive\Рабочий стол\Parcer\data.xlsx")
page = book.add_worksheet("товар")
row = 0
column = 0
page.set_column("A:A", 20)
page.set_column("B:B", 20)
page.set_column("C:C", 50)
page.set_column("D:D", 50)
for item in parametr():
page.write(row, column, item[0])
page.write(row, column+1, item[1])
page.write(row, column+2, item[2])
page.write(row, column + 3, item[3])
row +=1
book.close()
writer(array)