Как загрузить новостные статьи, используя определенные термины в Python - PullRequest
0 голосов
/ 02 мая 2020

Извините, что оставил такой открытый вопрос. Я пытаюсь собрать новостные статьи для моего исследования. Я думал, что автоматизированный сбор статей будет гораздо более эффективным. Основной вопрос c заключается в следующем: как загрузить термин с этого веб-сайта на языке, отличном от английского sh (https://www.prothomalo.com/)? Я использовал следующий код и могу загрузить сайт. Но я не могу загрузить какие-либо данные. Спасибо за любое руководство.

import urllib.request
from urllib.request import Request, urlopen
import newspaper
from newspaper import Article
import csv, os
from bs4 import BeautifulSoup
import urllib

req_keywords = ['করোনা ভাইরাস']

newspaper_base_url = 'https://www.prothomalo.com/'
category = 'archive'

def checkif_kw_exist(list_one, list_two):
    common_kw = set(list_one) & set(list_two)
    if len(common_kw) == 0: return False, common_kw
    else: return True, common_kw

def get_article_info(url):
    a = Article(url)
    try:
        a.download()
        a.parse()
        a.nlp()
        success, checked_kws = checkif_kw_exist(req_keywords, a.text.split())
        if success:
            return [url, a.publish_date, a.title, a.text]
        else: return False
    except:
        return False

output_file = "J:/B/output.csv"
if not os.path.exists(output_file):
    open(output_file, 'w').close() 

for index in range(1,3700,1):
    page_url = newspaper_base_url + '/' + category + '?page='+str(index)

    req = Request(page_url, headers={'User-Agent': 'Mozilla/5.0'})

    page_soup = BeautifulSoup(urllib.request.urlopen(req).read())

    primary_tag = page_soup.find_all("h4", attrs={"class": "pad-bottom-small"})

    for tag in primary_tag:

        url = tag.find("a")
        url = newspaper_base_url + url.get('href')
        result = get_article_info(url)
        if result is not False:
            with open(output_file, 'a', encoding='utf-8') as f:
                writeFile = csv.writer(f)
                writeFile.writerow(result)
                f.close
        else: 
            pass
...