Cara Python menggunakan Selenium atau PhantomJS untuk merangkak kandungan web dinamik
黄舟
黄舟 2017-05-18 11:01:14
0
3
993

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

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

membalas semua(3)
我想大声告诉你

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

给我你的怀抱

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.

巴扎黑

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan