BeautifulSoup
, httplib2
, time
re
, pandas
, datetime
import pandas as pd
from bs4 import BeautifulSoup
import httplib2
import re
import time
from datetime import datetime
http: // ~ / page / 1
; http: // ~ / page / 2
; ... etc.)
soup``` par
soup = BeautifulSoup (content, 'lxml') ``.num = 1
h = httplib2.Http('.cache')
base_url = "http://~/page"
url=base_url+ str(num)
response, content = h.request(url)
content = content.decode('utf-8')
soup = BeautifulSoup(content, 'lxml')
soupe '' `` en 1. (Liste des nouvelles individuelles sur la date / heure de publication, le titre, l'URL de l'article)
'div'```, ceux avec la valeur de
id "`` sont `` `` "primary" ``
sont extraits et
Stocker dans des `` données '' (extraire uniquement des informations sur des nouvelles individuelles à partir de diverses informations contenues dans la page d'accueil)data = soup.find_all('div', {"id": "primary"})
data
obtenu en 2. et stockez-le dansdates`
. Puisque
data est extrait par `` `find_all
, lors de l'extraction ultérieure par`` find_all``` à partir de là, ``
data [0]
Notez qu'il est spécifié comme `.
dates '' '' comprennent non seulement la date et l'heure, mais également des informations telles que l'heure. Puisque seules la date et l'heure sont utilisées ici, seules la date et l'heure sont extraites et stockées dans
temp```.
temp en type datetime et stockez-le dans` `` list
. Puisque les données originales contiennent un mélange de types `% d /% m /% Y``` et de types`
% Y-% m-% d,
index`` Les observations sont classées en utilisant ʻet converties en type datetime.dates = data[0].find_all('span', class_ = 'posted-on')
temp = []
for item in dates:
date = item.text
temp.append(date[1:11].split())
dlist = []
for item in temp:
index = item[0].find("/")
if index != -1:
dlist.append(datetime.strptime(item[0], '%d/%m/%Y').date())
else:
dlist.append(datetime.strptime(item[0], '%Y-%m-%d').date())
data obtenue en 2. et stockez-la dans `` `` newdata
.tlist``` (headline ... title t),
`ʻulist``` (url).
*Ici, pour le titre, la séquence d'échappement(\n|\r|\t)Nous travaillons à supprimer.newdata = data[0].find_all('h2', class_ ='entry-title')
tlist = []
ulist = []
for item in newdata:
urls = re.search('href="(?P<URL>.+?)"', str(item)).group('URL')
titles = item.get_text()
ulist.append(urls)
tlist.append(re.sub(r'\n|\r|\t', '', titles))
list_headline = pd.DataFrame({'date':dlist,
'headline':tlist,
'url':ulist})
num = 1 '' 'jusqu'à présent, mais dans ce qui suit, le même travail sera effectué pour plusieurs pages. `num``` est défini comme une variable et une page avec la même structure peut être automatiquement acquise en fonction de la valeur de
`num. (
Url = base_url + str (num) ```in 1. définit cela)headline '') et la variable (ici
num '') avec `` def```, et le contenu de la fonction Mettez en retrait et écrivez (voir «Code réel» ci-dessous pour plus de détails).def headline(num):
h = httplib2.Http('.cache')
base_url = "http://~/page"
url=base_url+ str(num)
#Omission#
return list_headline
num = 1
et stockez-la dans les titres
. En effet, il n'est pas possible de stocker un objet vide à l'aide d'une boucle.time.sleep (5)
).print (i)
est utilisé pour la vérification des erreurs.headlines = headline(1)
time.sleep(5)
for i in range (2,5):
temp = headline(i)
headlines = pd.concat([headlines, temp])
time.sleep(5)
print (i)
#headlines.to_csv(datetime.today().strftime("%Y%m%d")+'FILENAME.csv') ##Fondamentalement.csv est plus facile à utiliser et recommandé
headlines.to_excel('/Users/USERNAME/FOLDERNAME/'+ datetime.today().strftime("%Y%m%d")+'FILENAME.xlsx') ##Cliquez ici si le format Excel est meilleur
base_url
) et la destination de sauvegarde (voir 8. ci-dessus) ont des numéros fictifs insérés, donc même si vous utilisez ce code directement, vous n'obtiendrez aucun résultat.page1
, page2
, ...) diffère en fonction de la structure de la page d'accueil, et la structure des balises varie également. Est. Veuillez vérifier attentivement le code source de la page avant de l'utiliser.import pandas as pd
from bs4 import BeautifulSoup
import httplib2
import re
import time
from datetime import datetime
def headline(num):
h = httplib2.Http('.cache')
base_url = "http://~/page"
url=base_url+ str(num)
response, content = h.request(url)
soup = BeautifulSoup(content, 'lxml')
data = soup.find_all('div', {"id": "primary"})
dates = data[0].find_all('span', class_ = 'posted-on')
temp = []
for item in dates:
date = item.text
temp.append(date[1:11].split())
dlist = []
for item in temp:
index = item[0].find("/")
if index != -1:
dlist.append(datetime.strptime(item[0], '%d/%m/%Y').date())
else:
dlist.append(datetime.strptime(item[0], '%Y-%m-%d').date())
newdata = data[0].find_all('h2', class_ ='entry-title')
tlist = []
ulist = []
for item in newdata:
urls = re.search('href="(?P<URL>.+?)"', str(item)).group('URL')
titles = item.get_text()
ulist.append(urls)
tlist.append(re.sub(r'\n|\r|\t', '', titles))
list_headline = pd.DataFrame({'date':dlist,
'headline':tlist,
'url':ulist})
return list_headline
headlines = headline(1)
time.sleep(5)
for i in range (2,5):
temp = headline(i)
headlines = pd.concat([headlines, temp])
time.sleep(5)
print (i)
#headlines.to_csv(datetime.today().strftime("%Y%m%d")+'FILENAME.csv')
headlines.to_excel('/Users/USERNAME/FOLDERNAME/'+ datetime.today().strftime("%Y%m%d")+'FILENAME.xlsx') ##Cliquez ici si le format Excel est meilleur
Recommended Posts