使用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进行访问,访问成功就会返回
但是我获取到的页面源码不完整
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.
Adakah kandungan ini tersedia hanya selepas log masuk?
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:
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.