Pour cette raison, je voulais documenter les exercices de marche saine sur cette page. J'étudiais ** Sphinx ** à titre d'essai, je vais donc l'utiliser. J'ai l'impression que je l'utilise de force, donc cela a peut-être été extrêmement inefficace, mais c'est bien parce que c'était relativement bien fait.
Les pages vierges sont mélangées au milieu, mais ça va.
Sphinx
http://sphinx-users.jp/
BeautifulSoup
http://tdoc.info/beautifulsoup/
Il semble y avoir ** HTMLParser **, mais je ne savais pas comment l'utiliser, et c'était facile pour moi de comprendre personnellement, alors je l'ai utilisé.
pip install BeautifulSoup
Après cela, utilisez ceci pour extraire l'image et le texte d'explication du HTML de la page en question et utilisez Sphinx pour le remodeler en un document. Plus à ce sujet plus tard.
Tout d'abord, l'URL de la page de gymnastique est
http://kaigoouen.net/program/gymnastics/gymnastics_{Numéro de type de gymnastique}_{numéro de page}.html
Avec ce sentiment, il y a deux endroits où les nombres sont entrés (je m'en fiche, mais ce site fait-il du HTML pour chaque page?).
Il y a trois niveaux d'exercices de marche sains: hop, step et jump, mais il semble que ** hop a 2, step a 3, et jump a 4 ** (Au fait, 1 semble être comme la théorie précédente, donc cette fois Est inutile).
Puisque chacun des exercices de sauts, pas et sauts se compose de plusieurs pages, ** le nombre de pages est entré ici **.
Si vous pensez en fonction de ceux-ci, est-ce un flux comme celui-ci?
Je prévois de fabriquer les matériaux pour le houblon, les étapes et les sauts individuellement, donc c'est généralement OK.
Dans le flux considéré ci-dessus, considérez la partie 3.
Apparemment, la partie que je veux est dans l'élément div ** de la classe ** box02.
Par exemple, le houblon ressemble à ceci.
<div class="box02">
<h2>
<img alt="nom de l'article" src="text.gif"></img>
</h2>
<div class="box02_txt_hop">
<div class="hop_box">
<div class="hop_txt">Commentaire</div>
<div class="hop_image">
<img alt="Photo de référence" src="image.jpg "></img>
</div>
</div>
<div class="hop_box">
<!--Suite de l'article-->
</div>
</div>
<div class="box02">
<!--Prochain point-->
</div>
Donc, ce que je veux, c'est ...
c'est tout. Utilisez le module BeautifulSoup pour affiner ces derniers. Ce n'était pas trop difficile car vous pouvez ** trouver ** ou ** trouver tout ** avec des noms d'éléments ou des noms de classes. Après cela, écrivez un script Python qui réécrit le format réduit au format .rst pour Sphinx. Faites de votre mieux en regardant le Document.
Pour le moment, j'ai utilisé le ** nom de l'élément comme titre **, et ** je voulais organiser le commentaire et les images côte à côte, j'ai donc utilisé la méthode du tableau **.
Lors de l'extraction des explications et des images de chaque élément, j'ai d'abord pensé à ** traçons la partie pertinente du haut par nom de classe **. Donc, quand j'ai examiné les éléments de ** Firefox avec **, il m'a semblé que je devrais creuser dedans comme ** box02> box02_txt_hop> hop_box> hop_image ou hop_txt **, donc je le faisais. Ensuite, le dernier commentaire pour chaque élément sera omis. Donc, quand j'ai regardé de près, il m'a semblé que pour une raison quelconque, seule l'explication à la fin de chaque élément n'était pas incluse dans la classe ** hop_box pour le texte et l'image, et c'était directement sous la boîte supérieure02_txt_hop ** (raison). Est inconnu). Ainsi, hop_box est décidé à ignorer depuis le début. En premier lieu, find and findAll de BeautifulSoup semblent ** rechercher parmi tous les éléments sous l'élément cible en fonction des conditions **, il semble donc qu'il n'était pas nécessaire de rechercher une couche à la fois.
Si le contenu n'était que du texte, ce serait plus beau, mais personnellement je ne l'aimais pas car il était difficile de voir s'il incluait des images. Cependant, je ne savais pas comment changer le style (PDF en dehors du HTML), donc je l'ai traité en créant un nouveau tableau un par un.
Fréquemment utilisé lors de la sortie de fichiers .rst à partir de scripts Python.
type(text)
Je vais le réparer régulièrement tout en le vérifiant.
Il semble y avoir deux façons, ** rst2pdf ** et ** latex **, mais la première me semblait plus facile, j'ai donc décidé d'utiliser ** rst2pdf cette fois **.
Et j'en ai été accro les uns après les autres (peut-être que je ne voulais pas l'installer avec pip).
make pdf```ImportError: reportlab requires Python 2.7+ or 3.3+; 3.0-3.2 are not supported.
Ensuite, reportez-vous à ici
pip install -U reportlab==2.5
Ensuite, l'erreur change.
>[ERROR] pdfbuilder.py:130 need more than 3 values to unpack
Traceback (most recent call last):
File "/home/vagrant/www/public/hopstepjump/venv/lib/python2.6/site-packages/rst2pdf/pdfbuilder.py", line 78, in write
docname, targetname, title, author = entry[:4]
ValueError: need more than 3 values to unpack
FAILED
build succeeded, 1048 warnings.
En bref, la façon d'écrire ** conf.py ** était différente. Au début, je mets les documents que je souhaite faire en pdf dans ** pdf_documents **
```py
('hop','step','jump'),
Je pensais que ce serait connecté comme ça, mais c'était différent,
('docName', u'nom de fichier', u'Titre qui vient à la couverture du PDF', u'Auteur'),
Il semble que (en fait, c'était écrit dans le manuel). Cette taple est incluse dans la liste, donc si vous souhaitez convertir plusieurs documents en PDF, vous pouvez ajouter plusieurs taples.
Quoi qu'il en soit, jetez un second coup d'œil et `` créez un pdf ''
IOError: decoder jpeg not available identity=[ImageReader@0x3a3ce10 filename='/home/vagrant/www/public/hopstepjump/venv/lib/python2.6/site-packages/rst2pdf/images/image-missing.jpg'] FAILED build succeeded.
Un autre nouveau problème. Le jpeg est-il inutile?
Après enquête, il semble que libjpeg soit nécessaire, pas que PIL soit mauvais. http://kwmt27.net/index.php/2013/07/14/python-pil-error-decoder-jpeg-not-available/
Installez-le et réinstallez PIL Pouvez-vous aller avec miam?
yum search libjpeg
============================= N/S Matched: libjpeg ============================= libjpeg-turbo-devel.i686 : Headers for the libjpeg-turbo library libjpeg-turbo-devel.x86_64 : Headers for the libjpeg-turbo library libjpeg-turbo-static.x86_64 : Static version of the libjpeg-turbo library libjpeg-turbo.x86_64 : A MMX/SSE2 accelerated library for manipulating JPEG : image files libjpeg-turbo.i686 : A MMX/SSE2 accelerated library for manipulating JPEG image : files
Je ne sais pas lequel, alors essayez `` yum install libjpeg '' (j'espère que vous choisirez le meilleur pour vous).
Updated: libjpeg-turbo.x86_64 >0:1.2.1-3.el6_5
Complete!
Il semble que cela ait été fait, alors suivez la page à laquelle je fais référence
pip install -i pillow
make pdf
IOError: decoder jpeg not available identity=[ImageReader@0x221e150 filename='/home/vagrant/www/public/hopstepjump/venv/lib/python2.6/site-packages/rst2pdf/images/image-missing.jpg'] FAILED build succeeded.
Pas de progrès ...
yum list | grep libjpeg
Quand je l'ai essayé, il a été installé correctement, mais l'oreiller et le pilier sont les mêmes, n'est-ce pas?
Alors
pip install pil
Mais ça ne change pas ...
C'est ça? http://all-rounder-biz.blogspot.jp/2013/06/macioerror-decoder-jpeg-not-available.html Faux·····.
Ensuite ceci? http://d.hatena.ne.jp/rougeref/20130116 Oui, j'ai été déçu ...
Eh bien, si vous regardez l'écran après avoir installé PIL
*** TKINTER support not available
*** JPEG support not available
--- ZLIB (PNG/ZIP) support available
*** FREETYPE2 support not available
*** LITTLECMS support not available
--------------------------------------------------------------------
Il est devenu. Certes, JPEG n'est pas disponible. Le message d'erreur ne ment pas.
C'est ici? http://dev-pao.blogspot.jp/2010/04/python-imaging-library-piljpeg.html Non ...
Suivant http://d.hatena.ne.jp/rougeref/20130116
Oh, peut-être ...
yum install libjpeg-devel
Ensuite, effacez le PIL et réinstallez.
--- JPEG support available
Il semble que c'était parce que ** devel n'a pas pu être installé **. Quoi qu'il en soit, le problème JPEG est résolu, donc `` make pdf ''.
[ERROR] image.py:110 Missing image file: /home/vagrant/www/public/hopstepjump/http://kaigoouen.net/img/hop_pic_108.jpg
\u304b\u304b\u3068\u304b\u3089\u3064\u3044\u3066\u30fb\u30fb\u30fb\u3064\u307e\u5148\u3067\u3051\u308a\u51fa\u3059\u3001\u3092\u7e70\u308a\u8fd4\u3057\u306a\u304c\u3089\u3001\u6b69\u304d\u307e\u3057\u3087\u3046\u3002 line done build succeeded.
D'accord, cela ne fonctionne pas, mais ** l'endroit où j'essaie de charger l'image est évidemment étrange **. Mais je ne sais pas comment y remédier. N'est-il pas censé récupérer des images de l'extérieur?
Il était difficile de le vérifier comme message d'erreur, j'ai donc essayé diverses expériences et j'ai trouvé qu'il était replace dans **. Rst. ) Semblait bien **. Est-ce une sorte de bug? Quoi qu'il en soit, la solution est de ne pas l'utiliser.
Ensuite, les caractères sont déformés.
Ce qui est suspect est
sh: fc-match: commande introuvable [ERROR] findfonts.py:208 Unknown font: DejaVu Sans Mono-Bold
Partie (complète). Qu'est-ce que ** fc-match **? Donc, quand je l'ai googlé, cela ressemble à une commande qui vient dans une bibliothèque appelée ** fontconfig **.
Puis avec miam
yum search fontconfig
=========================== N/S Matched: fontconfig ============================ fontconfig.i686 : Font configuration and customization library fontconfig.x86_64 : Font configuration and customization library fontconfig-devel.i686 : Font configuration and customization library fontconfig-devel.x86_64 : Font configuration and customization library
Il y a aussi ordinaire et se développer. Je ne marcherai pas deux fois sur la même ornière ... alors j'ai installé develop. Et quand j'ai réessayé `` make pdf '', la précédente "commande introuvable" a été résolue. Cependant, la ligne ci-dessous n'est pas résolue. En premier lieu, il y a «DejaVu Sans Mono-Bold», mais je ne connais pas une telle police, qu'est-ce que c'est?
http://www.fontsquirrel.com/fonts/dejavu-sans-mono
Oh, c'est une police pour l'anglais par tous les moyens. Cela signifie-t-il que vous ne pouvez pas lire la feuille de style? ** conf.py ** ne semble pas être faux, alors consultez ** ja.json **, qui est la feuille de style. Je pense que je l'ai écrit d'après le document. Ensuite, après m'être inquiété de plusieurs heures, je n'ai pas fermé le devis à un seul endroit. J'ai aussi appris que les simples ne sont pas bons et qu'ils doivent être doubles.
Quoi qu'il en soit, il a finalement commencé à rechercher la police japonaise définie ... mais ** je ne peux pas la trouver **. En premier lieu, la commande ** fc-list n'a rien retourné **.
Eh bien, lorsque j'ai déplacé le fichier de police sous / usr / share / fonts, il a été résolu et les caractères déformés ont été corrigés, mais je ne comprends pas la signification de pdf_font_path ** dans ** conf.py. Actuellement, le contenu est vide, mais il peut être affiché en japonais sans aucun problème, et même si j'essaye d'écrire le chemin d'un autre endroit, il n'est pas reflété. Et si je veux le mettre ailleurs? (Réécrire les paramètres de ** Fontconfig ** quelque part?)
hopstepjump.py
#! /usr/bin/env python
# *-*coding:utf-8*-*
import sys,re,urllib2
from BeautifulSoup import BeautifulSoup
#### reference page ####
base_url = 'http://kaigoouen.net'
hopstepjump = {
'hop':{
'index':2,
'last_page':25,
},
'step':{
'index':3,
'last_page':39,
},
'jump':{
'index':4,
'last_page':46,
},
}
#### for make .rst files ####
br = u'\n'
page_break = u".. raw:: pdf%s PageBreak" % (br*2)
def soup_to_sphinx(pg):
p = 1
while p <= pg['last_page']:
url = base_url + '/program/gymnastics/gymnastics_{index}_{page}.html'.format(index=pg['index'],page=p)
htmldata = urllib2.urlopen(url)
soup = BeautifulSoup( unicode(htmldata.read(),'utf-8') )
for box in soup.findAll('div',{'class':'box02'}):
lessons = box.find('div',{'class':'box02_txt_%s' % choice})
if lessons is not None:
title = box.contents[1].contents[0]['alt']
print( sphinx_head(title) )
images = lessons.findAll('div',{'class':'%s_image' % choice})
texts = lessons.findAll('div',{'class':'%s_txt' % choice})
texts = iter(texts)
for image in images:
src = base_url + image.contents[0]['src']
image = sphinx_image(src)
text = texts.next().renderContents()
text = sphinx_text(text)
print( sphinx_listtable(image,text) )
print(page_break)
htmldata.close()
p += 1
def sphinx_head(txt):
return br.join([br,txt,u"="*30+br]).encode('utf-8')
def sphinx_listtable(s_img,s_txt):
table = u".. list-table::" + br
image = u" * - %s" % s_img
text = u" - | %s" % s_txt
return br.join([table,image,text,br]).encode('utf-8')
def sphinx_image(src):
option = u":width: 150pt"
return u".. image:: %s" % src + br + u" %s" % option
def sphinx_text(txt):
text = txt.decode('utf-8').replace(u"<br />",br)
if br in text:
texts = text.splitlines()
text = reduce(lambda x,y: x + br + u" | " + y,texts)
return text
if __name__ == '__main__':
try:
choice = sys.argv[1]
page = hopstepjump[choice]
except IndexError:
print("[Erreur]: Option requise ('hop'Ou'step'Ou'jump'のいずれOu)。")
exit(" -Exemple:'python %s hop'" % sys.argv[0])
except KeyError:
print("[Erreur]: Les options sont différentes ('hop'Ou'step'Ou'jump'のいずれOu)。")
exit(" -Exemple:'python %s hop'" % sys.argv[0])
soup_to_sphinx(page)
python hopstepjump.py hop > hop.rst
C'est un plaisir d'écrire un fichier de plus de 1000 lignes avec une seule commande.
Quoi qu'il en soit, si vous faites une configuration avec cela, tout ce que vous avez à faire est
make html`
ou `` make pdf```.
GitHub
https://github.com/juniskw/hopstepjump/tree/no_replace_listtable
A propos, un étranger que je ne connais pas est autorisé, est-ce quelque chose de malicieux?
Recommended Posts