Это скрипт на python3, и он не безупречен, но я надеюсь, что он может послужить отправной точкой, чтобы вы могли достичь того, что пытаетесь. Я не уверен, что этот сайт, с которого вы пытаетесь очистить данные, разрешает такую операцию, поэтому я не буду размещать их веб-адреса для констант WEB_SITE_BASE_URL и WEB_SITE_REGION_URL. Это ваш выбор, что вы собираетесь поместить туда.
import requests
from bs4 import BeautifulSoup
from datetime import datetime
# https://www.xxxx.com"
WEB_SITE_BASE_URL= ""
# https://www.xxxx.com/?region=us
WEB_SITE_REGION_URL = ""
def get_categories(web_site_base_url):
r = requests.get(web_site_base_url)
c = r.content
soup = BeautifulSoup(c,"html.parser")
spans = soup.find_all(attrs={"nav-menu-buttonText"})
categories = [category.text for category in spans]
return categories
def get_links(category_url):
r = requests.get(category_url)
c = r.content
soup = BeautifulSoup(c,"html.parser")
links = [a.get('href') for a in soup.find_all('a', href=True)]
filtered_links = list(set([k for k in links if '/2018/11/' in k]))
return filtered_links
def news(link):
r = requests.get(link)
c = r.content
soup = BeautifulSoup(c,"html.parser")
Title=soup.find("h1",{"class":"title"}).text.replace("\r","").replace("\n","")
content=' '
for content_tag in soup.find_all("p"):
content = content+content_tag.text.replace("\r","").replace("\n","")
content= content[18:-458]
Country ='United States'
website='WEB_SITE_BASE_URL'
comments=''
date= soup.find("time",{"class":"datestamp"}).text[35:-2].replace("\r","").replace("\n","")
d = datetime.strptime(date, "%d %b %Y")
date = d.strftime("%d-%m-%Y")
spans = soup.find_all(attrs={"header_title last breadcrumb"})
categories = [category.text for category in spans]
genre = categories
return(Title,content,Country,website,comments,genre,date)
categories = get_categories(WEB_SITE_REGION_URL)
list_of_link_lists = []
for category in categories:
list_of_link_lists.append(get_links(WEB_SITE_BASE_URL + "/" + category.replace(" ", "20%")))
flat_link_list = list(set([item for sublist in list_of_link_lists for item in sublist]))
articles_list = []
for link in flat_link_list:
try:
articles_list.append(news(WEB_SITE_BASE_URL + link))
except:
print("Something was wrong")
continue
print(articles_list)