recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment Python utilise Selenium ou PhantomJS pour explorer le contenu Web dynamique

Si vous souhaitez utiliser Python pour effectuer des transactions boursières quantitatives, la première étape consiste à obtenir les données historiques de l'action. Visitez la page Web http://data.eastmoney.com/sto... Après avoir ouvert le code source de la page Web, vous ne pouvez pas voir les données dans le tableau. On dit qu'elles sont chargées à l'aide de la technologie ajax. J'ai vu sur Internet que Selenium et phantomJS pouvaient être utilisés pour obtenir ces contenus web dynamiques, mais je ne sais pas comment obtenir le code source complet. Veuillez donner quelques conseils d'experts

黄舟黄舟2748 Il y a quelques jours979

répondre à tous(3)je répondrai

  • 我想大声告诉你

    我想大声告诉你2017-05-18 11:03:14

    En fait, je viens de l'essayer. La page n'a pas été chargée en xhr C'était déjà dans le code source de la page, puis une classe a été appelée pour charger les données dans une table.
    Par exemple, les données sur la page d'accueil :

    Ensuite, utilisez simplement la réextraction directement. Après avoir obtenu le texte, analysez-le simplement avec json.
    Écrivez d'abord ici.
    ++++++++++++++++++++++++++++++++++++++++

    Ensuite, ce site Web n'utilise pas xhr pour charger des données mais utilise js pour charger des données json et les analyser dynamiquement pour l'affichage. Une analyse spécifique nécessite une connaissance de js. Si vous le comprenez, vous pouvez essayer de l'analyser vous-même.

    Je l'ai essayé.

    
    from urllib.parse import quote
    import time
    import requests
    
    url = "http://datainterface.eastmoney.com/EM_DataCenter/JS.aspx?type=FD&sty=TSTC&st={sortType}\
    &sr={sortRule}&p={page}&ps={pageSize}&js=var {jsname}=(x){param}"
    
    params = {
        "sortType": 1,
        "sortRule": 1,
        "page": 2,
        "pageSize": 50,
        "jsname": "Aafdafgq", # 这里使用的是随机字符串,8位
        "param": "&mkt=0&rt="
    }
    params["param"] += str(int(time.time()/30)) # 当前时间
    url = url.format(**params)
    
    url = quote(url, safe=":=/?&()")
    req = requests.get(url)
    
    req.text

    répondre
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-18 11:03:14

    L'avantage d'utiliser cette combinaison est qu'elle est simple et violente, mais l'inconvénient est qu'elle est moins efficace.
    Cela équivaut à ouvrir une page de chargement de navigateur que vous ne pouvez pas voir, puis à lire les résultats calculés.
    Si vous débutez dans l'apprentissage des reptiles, je vous recommande ce livre sur les animaux intitulé Collecte de données sur le réseau Python.
    Les instructions dont vous avez besoin se trouvent dans le chapitre sur la collecte de pages dynamiques.
    Ce livre est très fin et très pratique.

    répondre
    0
  • 巴扎黑

    巴扎黑2017-05-18 11:03:14

    Je ne connais pas grand-chose à js ou json, et je viens de commencer à explorer. Après votre invite, j'ai vérifié à nouveau le code source et j'ai découvert qu'il y avait ces données dans defjson. Je ne comprends pas comment afficher les données dans json dans tbody. Je peux capturer ces données en utilisant read_html de pandas, mais les deux dernières colonnes seront perdues. Il semble que je doive d'abord regarder js et json

    répondre
    0
  • Annulerrépondre