2017-10-03 3 views
0

Je voudrais saisir tout lien nom commercial sur (http://mokorea.com/yp_business_list_major.php?cat=4)crawler Python ne fonctionne pas

Voici mon code Python:

from __future__ import unicode_literals 

import requests 
from scrapy.selector import Selector 

def fetch_page(url): 
    '''1. 웹페이지 다운로드''' 
    r = requests.get(url) 
    return r.text 

def upso_list_from_listpage(url): 
    '''2.목록 페이`enter code here`지에서 강의 링크등 추출''' 
    html = fetch_page(url) 
    sel = Selector(text=html) 
    upso_list = sel.xpath('//*[@id="List_0"]/div[4]').extract() 
    #upso_list = sel.css('.container results .talk-link .media__message a::attr(herf)').extract() 
    return upso_list 
from pprint import pprint 
pprint(upso_list_from_listpage('http://mokorea.com/yp_business_list_major.php?cat=4')) 

et je tente de lancer py sur rapide, rien montrant en haut

1

Tout commentaire serait utile.

+0

Pouvez-vous copier la structure HTML de ce site afin que nous puissions le voir? –

+0

vous pouvez tester votre modèle xpath contre votre HTML en utilisant des outils en ligne comme celui-ci: http://videlibri.sourceforge.net/cgi-bin/xidelcgi –

+0

Il est AJAX page générée, vous devez utiliser [Sélénium] (http: // selenium-python.readthedocs.io/) ou quelque chose comme ça. –

Répondre

0

C'est une page générée par AJAX.

Vous pouvez utiliser cette link par exemple et le sélecteur de XPath comme ceci:

sel.xpath('//*[@id="List_0"]/div[4]/span/a/text()').extract() 

ici vous obtiendrez le texte de la première ligne. Après cela, vous devez:

  1. par Itérer ids div ("List_0", "Liste_1" etc) pour obtenir une autre ligne.
  2. Analyze paramètres GET dans le lien inclus, les corriger et la boucle que vous voulez (spécialement page)
+0

Merci beaucoup. ça marche maintenant. J'ai deux autres questions pour vous. Comment avez-vous obtenu ce lien et que signifie la page générée par AJAX? La page Ajax est-elle difficile à obtenir des données? ou autre chose? Je suis un peu newbi. –

+0

[AJAX] (https://en.wikipedia.org/wiki/Ajax_ (programmation)) signifie dans ce cas un tas de javascripts sur cette page web. Pour obtenir ce lien, vous devez utiliser les outils de développement dans n'importe quel navigateur et un peu de soin. Ouvrez l'onglet Réseau et analysez les demandes effectuées par le contenu de la page Web. –