cari

Rumah  >  Soal Jawab  >  teks badan

Cara Python menggunakan Selenium atau PhantomJS untuk merangkak kandungan web dinamik

Jika anda ingin menggunakan ular sawa untuk melakukan perdagangan saham kuantitatif, langkah pertama adalah untuk mendapatkan data sejarah saham. Lawati halaman web http://data.eastmoney.com/sto... Selepas membuka kod sumber halaman web, anda tidak dapat melihat data dalam jadual Dikatakan bahawa ia dimuatkan menggunakan teknologi ajax. Saya melihat di Internet bahawa selenium dan phantomJS boleh digunakan untuk mendapatkan kandungan web dinamik ini, tetapi saya tidak tahu bagaimana untuk mendapatkan kod sumber yang lengkap. Mohon tunjuk ajar dari pakar

黄舟黄舟2794 hari yang lalu1005

membalas semua(3)saya akan balas

  • 我想大声告诉你

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

    Malah, saya baru saja mencuba Halaman itu tidak dimuatkan menggunakan xhr Ia sudah ada dalam kod sumber halaman, dan kemudian kelas dipanggil untuk memuatkan data ke dalam jadual.
    Sebagai contoh, data pada halaman utama:

    Kemudian, hanya gunakan pengekstrakan semula secara langsung Selepas mendapat teks, hanya menghuraikannya dengan json.
    Tulis di sini dahulu.
    ++++++++++++++++++++++++++++++++++++++++++++

    Kemudian, tapak web ini tidak menggunakan xhr untuk memuatkan data tetapi menggunakan js untuk memuatkan data json dan menghuraikannya secara dinamik untuk paparan. Analisis khusus memerlukan pengetahuan tentang js Jika anda memahaminya, anda boleh cuba menganalisisnya sendiri.

    Saya dah cuba.

    
    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

    balas
    0
  • 给我你的怀抱

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

    Kelebihan penggunaan gabungan ini adalah ia mudah dan ganas, tetapi kelemahannya ialah ia kurang cekap.
    Ia sama dengan membuka halaman memuatkan penyemak imbas yang anda tidak dapat lihat, dan kemudian membaca hasil yang dikira.
    Jika anda baru mempelajari reptilia, saya syorkan buku haiwan yang dipanggil pengumpulan data rangkaian python ini.
    Arahan yang anda perlukan terdapat dalam bab mengumpul halaman dinamik.
    Buku ini sangat nipis dan sangat praktikal.

    balas
    0
  • 巴扎黑

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

    Saya tidak tahu banyak tentang js atau json saya baru mula merangkak. Selepas gesaan anda, saya menyemak semula kod sumber dan mendapati bahawa terdapat data ini dalam defjson. Saya tidak faham cara memaparkan data dalam json ke dalam tbody. Saya boleh menangkap data ini menggunakan read_html panda, tetapi dua lajur terakhir akan hilang. Nampaknya kena tengok js dan json dulu

    balas
    0
  • Batalbalas