Я пытаюсь извлечь данные из веб-сайта в Python - PullRequest
0 голосов
/ 12 июня 2018
def convert():
    for url in url_list:
        news=Article(url)
        news.download()
        while news.download_state != 2:
            time.sleep(1)
        news.parse()
        l.append(
            {'Title':news.title, 'Text': news.text.replace('\n',' '), 'Date':news.publish_date, 'Author':news.authors}
        )

convert()
df = pd.DataFrame.from_dict(l)
df.to_csv('Amazon_try2'+'.csv',encoding='utf-8', index=False)

Функция convert () просматривает список URL и обрабатывает каждый из них.Каждый URL является ссылкой на статью.Я выбираю важные атрибуты статей, такие как автор, текст и т. Д., А затем сохраняю их во фрейме данных.После этого я конвертирую фрейм данных в CSV-файл.Скрипт работал около 5 часов, так как в url_list было 589 URL.Но я все еще не мог получить файл CSV.Может кто-нибудь определить, где я иду не так.

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

вероятно, ваша функция останавливается здесь:

    while news.download_state != 2:
        time.sleep(1)

она ожидает изменения состояния загрузки, но никогда не происходит.Ваша функция также должна возвращать список

что-то вроде этого должно работать:

def convert():
    for url in url_list:
        news=Article(url)
        news.download()

        news.parse()
        l.append(
            {'Title':news.title, 'Text': news.text.replace('\n',' '), 'Date':news.publish_date, 'Author':news.authors}
        )
    return l 

l = convert()
df = pd.DataFrame.from_dict(l)
df.to_csv('Amazon_try2'+'.csv',encoding='utf-8', index=False)
0 голосов
/ 12 июня 2018

Предполагая, что это вся ваша программа, вам нужно вернуть l из convert.

def convert():
    for url in url_list:
        news=Article(url)
        news.download()
        while news.download_state != 2:
            time.sleep(1)
        news.parse()
        l.append(
            {'Title':news.title, 'Text': news.text.replace('\n',' '), 'Date':news.publish_date, 'Author':news.authors}
        )
    return l 

l = convert()
df = pd.DataFrame.from_dict(l)
df.to_csv('Amazon_try2'+'.csv',encoding='utf-8', index=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...