python - requests get不到完整页面源码
巴扎黑
巴扎黑 2017-04-17 17:53:46
0
5
3341

使用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进行访问,访问成功就会返回
但是我获取到的页面源码不完整

巴扎黑
巴扎黑

membalas semua(5)
巴扎黑

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?

Ty80

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
Ty80

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

刘奇

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

左手右手慢动作

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.

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