Я новичок в Python asyncio.Я хочу экспортировать очищенные данные, чтобы преуспеть, используя панд.Похоже, мой код ниже очищает целевые поля, но пока я экспортирую вывод, используя pandas для преуспевания, я получаю пустой выходной файл.
import asyncio
from concurrent.futures.thread import ThreadPoolExecutor
import pandas as pd
import os
import requests
from bs4 import BeautifulSoup
input_file = os.path.join(os.getcwd(), 'Sample.xlsx')
df = pd.read_excel(input_file, usecols=0)
req = requests.Session()
req.trust_env = False
Url, title, price = [], [], [],
executor = ThreadPoolExecutor(10)
def scrape(url, *, loop):
loop.run_in_executor(executor, load_html, url)
def load_html(url):
print(url)
res = req.get(url)
soup = BeautifulSoup(res.content, 'html.parser')
Url.append(url)
title.append(soup.select('.pinfo-title')[0].text)
price.append(soup.select('.sale-price')[0].text)
loop = asyncio.get_event_loop()
for url in df['Urls']:
scrape(url, loop=loop)
loop.run_until_complete(asyncio.gather(*asyncio.all_tasks(loop)))
output = pd.DataFrame({
'Url': Url,
'Title': title,
'Price': price
})
output.to_excel('Output.xlsx', index=False)
, но если я использую печать вместо добавления списков, таких как ниже, то этораспечатать нужный вывод.
def load_html(url):
print(url)
res = req.get(url)
soup = BeautifulSoup(res.content, 'html.parser')
print(url)
print(soup.select('.pinfo-title')[0].text)
print(soup.select('.sale-price')[0].text)