2017-09-13 2 views
0

Je données à l'aide de déchirage lxmlhtml grattage utilisant lxml

Ceci est l'élément inspectez du seul poste

<article id="post-4855" class="post-4855 post type-post status-publish format-standard hentry category-uncategorized"> 


<header class="entry-header"> 
    <h1 class="entry-title"><a href="http://aitplacements.com/uncategorized/cybage/" rel="bookmark">Cybage..</a></h1> 
      <div class="entry-meta"> 
     <span class="byline"> Posted by <span class="author vcard"><a class="url fn n" href="http://aitplacements.com/author/tpoait/">TPO</a></span></span><span class="posted-on"> on <a href="http://aitplacements.com/uncategorized/cybage/" rel="bookmark"><time class="entry-date published updated" datetime="2017-09-13T11:02:32+00:00">September 13, 2017</time></a></span><span class="comments-link"> with <a href="http://aitplacements.com/uncategorized/cybage/#respond">0 Comment</a></span>  </div><!-- .entry-meta --> 
     </header><!-- .entry-header --> 

<div class="entry-content"> 
    <p>cybage placement details shared <a href="http://aitplacements.com/uncategorized/cybage/" class="read-more">READ MORE</a></p> 
     </div><!-- .entry-content --> 

Pour chaque tel poste, je veux en extraire le titre, le contenu de poster, et post-timing.

Par exemple, dans ci-dessus, les détails seront

{title : "Cybage..", 
post : "cybage placement details shared" 
datetime="2017-09-13T11:02:32+00:00" 
} 

Jusqu'à maintenant ce que je suis en mesure d'atteindre: le site nécessite une connexion, je suis Successfull à le faire.

Pour l'extraction d'informations:

headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) 
Chrome/42.0.2311.90'} 
url = 'http://aitplacements.com/news/' 
page = requests.get(url,headers=headers) 
doc = html.fromstring(page.content) 
#print doC# it prints <Element html at 0x7f59c38d2260> 
raw_title = doc.xpath('//h1[@class="entry-title"]/a/@href/text()') 
print raw_title 

La raw_title donne une valeur vide []?

Qu'est-ce que je fais mal?

+0

Vous devez prendre un coup d'oeil à [belle soupe] (https://www.crummy.com/softw sont/BeautifulSoup/bs4/doc /). C'est génial pour votre besoin. Ou encore «scrapy», si vous avez besoin de quelque chose de plus avancé (par exemple, les araignées). – floatingpurr

+0

Je recevais de la valeur vide, parce que je devais être déconnecté, j'ai corrigé le problème –

Répondre

0

@href fait référence à la valeur de l'href attribut:

In [14]: doc.xpath('//h1[@class="entry-title"]/a/@href') 
Out[14]: ['http://aitplacements.com/uncategorized/cybage/'] 

Vous voulez que le texte de l'élément <a> place:

In [16]: doc.xpath('//h1[@class="entry-title"]/a/text()') 
Out[16]: ['Cybage..'] 

Par conséquent, utilisez

raw_title = doc.xpath('//h1[@class="entry-title"]/a/text()') 
if len(raw_title) > 0: 
    raw_title = raw_title[0] 
else: 
    # handle the case of missing title 
    raise ValueError('Missing title') 
+0

Pourquoi je deviens vide "raw_title', le doc extrait la page correctement? –

+0

Si vous n'êtes pas sûr de ce que 'doc' a analysé, imprimez' LH.tostring (doc, pretty_print = True) '(ou écrivez-le dans un fichier et inspectez-le). La raison pour laquelle vous obtenez un 'raw_title' vide est parce que' a/@ href/text() 'cherche du texte attaché à l'attribut' href'. Il n'y en a pas. Le texte est attaché à l'élément ''. – unutbu

+0

le problème était que j'étais déconnecté à nouveau, a résolu le problème –