Extrayez des articles avec les 10 meilleures actions dans une certaine étiquette.
windows8.1 python3.5
Classez les balises Python.
Méthode d'exécution → python stock_rank.py> output.html
stock_rank.py
# -*- coding: utf-8 -*-
import urllib.request
from bs4 import BeautifulSoup
#Initialisation du numéro de contribution
cont = []
for i in range(10):
cont.append(0)
#Initialisation du titre
title = []
for i in range(10):
title.append("")
page_num = 1
while True:
try:
html = urllib.request.urlopen("https://qiita.com/tags/Python/items?page=" + str(page_num)).read()
soup = BeautifulSoup(html, "html.parser")
#Extraction HTML en spécifiant une classe
title_all = soup.find_all(class_="publicItem_body")
# publicItem_Passer des pages sans classe de corps
if len(title_all) == 0:
continue
for i in range(20):
try:
#Extraction HTML en spécifiant une classe
cont_all = soup.find_all(class_="publicItem_stockCount")
#Supprimer les balises gênantes
cont_sakujo = str(cont_all[i]).replace('<i class="fa fa-stock "></i>','')
# cont_all_Comme après le type str, la propriété string ne peut pas être utilisée
#Par conséquent, passez au type Belle soupe
cont_kazu = int(BeautifulSoup(cont_sakujo, "html.parser").string)
for j in range(10):
if cont_kazu >= cont[j]:
#Substitution du numéro de contribution
cont.insert(j, cont_kazu)
cont.pop()
#Attribution de titre
title.insert(j, title_all[i])
title.pop()
break
#Ignorer les articles qui ne sont stockés par personne
except:
continue
page_num += 1
# HTTP Error 404
except:
break
for i in range(len(title)):
print (str(cont[i]) + " " + str(title[i].a).replace('href="', 'href="http://qiita.com') + "<br>")
Lors de l'affichage de l'encodage avec utf-8, des caractères déformés se sont produits, je l'ai donc changé en shift-jis.
Le temps d'exécution du programme est long (> _ <)
Obtenez des informations sur le net avec Python3 + urllib + BeautifulSoup Grattage avec Python et Beautiful Soup Gratter avec une belle soupe
Recommended Posts