cari

Rumah  >  Soal Jawab  >  teks badan

python - requests get不到完整页面源码

使用requests进行get只获取到了一部分html源码,下面是我的代码

def get_url(self,url=None,proxies=None):
    header = {
        'User-Agent' : 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:46.0) Gecko/20100101 Firefox/46.0',
        'Content-Type': 'application/x-www-form-urlencoded',
        'Connection' : 'Keep-Alive',
        'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
        }
    for prox in proxies:
        try:
            r=requests.get(url,proxies=prox,headers=header)
            if r.status_code!=200:
                continue
            else:
                print "使用{0}连接成功>>".format(prox)
                return r.content
        except Exception, e:
            return None

proxies参数是一个代理列表,这段代码会尝试使用proxies进行访问,访问成功就会返回
但是我获取到的页面源码不完整

巴扎黑巴扎黑2881 hari yang lalu3380

membalas semua(5)saya akan balas

  • 巴扎黑

    巴扎黑2017-04-17 17:55:46

    Terdapat beberapa sebab
    1. Mungkin beberapa kandungan dimuatkan melalui ajax.
    Oleh itu, kandungan profil penuh tidak boleh diperolehi melalui requests.get
    Adalah disyorkan untuk menggunakan alat seperti pepijat api untuk menentukan sama ada ini sebabnya.

    1. Adakah kandungan ini tersedia hanya selepas log masuk?

    balas
    0
  • PHP中文网

    PHP中文网2017-04-17 17:55:46

    Kod saya boleh mendapatkan keseluruhan kandungan halaman, tetapi ia tidak menggunakan parameter proksi permintaan.
    Cuba lihat sama ada anda boleh mendapatkan kandungan penuh tanpa menggunakan ejen?

    Kod saya:

    import requests
    
    headers = {
            'User-Agent' : 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:46.0) Gecko/20100101 Firefox/46.0',
            'Content-Type': 'application/x-www-form-urlencoded',
            'Connection' : 'Keep-Alive',
            'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
    }
    html = requests.get('http://www.xicidaili.com/nn/', headers=headers).text
    print html

    balas
    0
  • PHP中文网

    PHP中文网2017-04-17 17:55:46

    Saya menangkap Ubuntuer... malah memasang tema... Saya baru sahaja berlalu...

    balas
    0
  • 怪我咯

    怪我咯2017-04-17 17:55:46

    Jawapan di tingkat 1 adalah sangat jelas bahawa halaman web yang dikembalikan dimuatkan secara tidak segerak.

    balas
    0
  • ringa_lee

    ringa_lee2017-04-17 17:55:46

    Biar saya beritahu anda cara menyelesaikan masalah. [Pemandu lama tidak merungut]

    1. Gunakan alat rangkaian Chrome untuk menangkap paket (alat lain juga boleh diterima), dan bandingkan respons dengan hasil yang anda rakam. Jika ia adalah sama, ini bermakna halaman ini perlu dipaparkan melalui js.

    2. Jika keputusan dalam langkah 1 tidak konsisten, pertimbangkan kesan medan lain dalam pengepala. Secara umum, kuki menjejaskan hak akses, dan ejen pengguna mempengaruhi struktur dan kandungan dom. Terutamanya semak dua perkara ini dahulu. (Mungkin terdapat beberapa pengepala pelik yang memerlukan pemprosesan khas)

    3. Buka permintaan ujian proksi untuk menyelesaikan masalah seperti akses kepada IP yang disekat

    4. Jika ia ditentukan untuk menjadi halaman yang dipaparkan oleh js. Terdapat dua penyelesaian Satu adalah untuk menangkap antara muka api (memerlukan kebolehan yang mendalam untuk menemui peraturan Untuk kaedah penangkapan paket, rujuk 1). Yang kedua adalah untuk melakukan secara langsung rendering js (operasi berkaitan) pada pelayan untuk mendapatkan hasil rendering halaman terakhir.

    balas
    0
  • Batalbalas