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

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

巴扎黑
巴扎黑

全員に返信(5)
巴扎黑

理由はいくつかあります
1. 一部のコンテンツが ajax を通じてロードされている可能性があります。
したがって、requests.get では完全なプロファイルの内容を取得できません。
これが原因かどうかを判断するには、firebug などのツールを使用することをお勧めします。

  1. このコンテンツはログイン後にのみ利用可能ですか?

いいねを押す +0
Ty80

私のコードはページのすべてのコンテンツを取得できますが、リクエストのプロキシパラメータを使用しません。
エージェントを使用せずに完全なコンテンツを入手できるかどうか試してみませんか?

私のコード:

リーリー
いいねを押す +0
Ty80

Ubuntuer を見つけました...テーマもインストールしました...通り過ぎただけです...

いいねを押す +0
刘奇

1 階の答えは非常に明確です。返された Web ページは非同期でロードされるはずです。非同期リクエストがあるかどうかを確認するために fiddler を使用することをお勧めします。

いいねを押す +0
左手右手慢动作

トラブルシューティングの方法を説明します。 [高齢ドライバーは文句を言わない]

1. Chrome のネットワーク ツールを使用してパケットをキャプチャし (他のツールも使用できます)、応答をキャプチャした結果と比較します。それらが同じである場合、このページは js を介してレンダリングする必要があることを意味します。

2. ステップ 1 の結果に一貫性がない場合は、ヘッダー内の他のフィールドの影響を考慮してください。一般に、Cookie はアクセス権に影響し、ユーザー エージェントは DOM 構造とコンテンツに影響します。まずは主にこの2点を確認してください。 (特殊な処理を必要とする奇妙なヘッダーが存在する可能性があります)

3. IP へのアクセスがブロックされているなどの問題をトラブルシューティングするには、プロキシ テスト リクエストを開きます

4. js レンダリングされたページであると判断された場合。解決策は 2 つあります。1 つは API インターフェイスをキャプチャすることです (パケット キャプチャの方法については、1 を参照してください)。 2 つ目は、サーバー上で直接 js レンダリング (関連操作) を実行して、最終的なページのレンダリング結果を取得する方法です。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート