美文网首页
crwal 动态加载页面示例

crwal 动态加载页面示例

作者: 小草_f57c | 来源:发表于2019-01-08 11:01 被阅读0次

# -*- coding: utf-8 -*-

import json

import requests

from lxml import etree

from urllib import parse

BASE_URL = "https://www.instagram.com/urnotchrislee/"

headers = {

    "Origin": "https://www.instagram.com/",

    "Referer": "https://www.instagram.com/urnotchrislee/",

    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "

                  "Chrome/58.0.3029.110 Safari/537.36",

    "Host": "www.instagram.com"}

def load_rest(table,has_next_page):

    rest = []

    while has_next_page:

        text = json.dumps(table)

        URL = 'https://www.instagram.com/graphql/query/?query_id=17888483320059182&variables='+parse.quote(text)

        res = requests.get(URL,headers = headers)

        dic = json.loads(res.content.decode(),encoding='utf-8')

        data = dic['data']['user']['edge_owner_to_timeline_media']

        nodes = data['edges']

        end_cursor = data['page_info']['end_cursor']

        has_next_page = data['page_info']['has_next_page']

        for node in nodes:

            rest.append(node['node']['display_url'])

            #print(node['node']['display_url'])

        table['after'] = end_cursor

        print('加载..') 

    print('加载完成')

    return rest

if __name__=='__main__':

    res = requests.get(BASE_URL,headers = headers)

    html = etree.HTML(res.content.decode())

#    h = html.xpath('''//script[@type="text/javascript"]/text()''')[1].replace('window._sharedData =','').strip()

    h = html.xpath('''//script[@type="text/javascript"]''')[1].text.replace('window._sharedData = ','').strip()[:-1]

    dic = json.loads(h,encoding='utf-8')

    data = dic['entry_data']['ProfilePage'][0]['user']['media']

    nodes = data['nodes']

    end_cursor = data['page_info']['end_cursor']

    has_next_page = data['page_info']['has_next_page']

    lee_id = nodes[0]["owner"]["id"]  #'1161353543'

    src_list = []

    for node in nodes:

        src_list.append(node['display_src'])

        print(node['display_src'])

    print('加载') 

    table = {

            'id':lee_id,

            'first':12,

            'after':end_cursor}

    rest = load_rest(table,has_next_page)

    src_list = src_list + rest

    print(len(src_list))

#    with open('abc', 'w') as f:

#    for s in src_list:

#        f.write(s)

#        f.write('\n')   

    headers = {

        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "

                      "Chrome/58.0.3029.110 Safari/537.36",}

    for i in range(len(src_list)):

        url = src_list[i].strip()

        res = requests.get(url,headers = headers)

        with open('第'+str(i+1)+'张.jpg','wb') as ff:

            ff.write(res.content)

相关文章

  • crwal 动态加载页面示例

    # -*- coding: utf-8 -*- import json import requests from ...

  • PHP页面静态化01

    动态页面与静态页面 动态页面:首先加载动态文件,将动态文件中的内容,如php文件, asp文件等 静态页面:静态的...

  • 安卓,so库动态载入

    so库动态载入,修复应用无法安装。 (so库动态加载示例。从asset目录加载so库,安装时不导出so库,不会导致...

  • 三、Java中级--4、java反射

    1、什么是反射 动态的加载类,在使用的时候加载进内,通过Class.forName("")将其加载。 示例1: P...

  • 无聊的爬虫 爬取煎蛋网的妹子图

    周末无聊没事做写了个小爬虫爬虫爬取的页面通常有两种一种是不存在动态加载数据的页面,另外一种是存在动态加载页面的网页...

  • Python 实战:week1 爬取霉霉图片

    运行效果: 作业代码: 项目代码 小结 异步加载 通过 JS 实现动态加载数据,在与当前 HTML 页面的加载并不...

  • 使用swiper动态加载数据遇到的坑

    使用swiper动态加载数据遇到的 在页面开始先初始化的swiper,再发送请求动态加载数据然后生成html插入到...

  • [Python3爬虫]selenium+chromdriver可

    动态加载页面信息的提取[二] 上一遍博客介绍了Ajax的分析和抓取方式,这只是JavaScript动态渲染的页面的...

  • jss理解

    jss可以在jss中写css,并attach到页面中. 可以动态添加,动态撤除.可用于懒加载的页面渲染中.配合lo...

  • python爬虫从小白到高手 Day2 动态页面的爬取

    今天我们说说动态页面的抓取,动态页面的概念不是说网页上的内容是活动的,而是刷新的内容由Ajax加载,页面的URL没...

网友评论

      本文标题:crwal 动态加载页面示例

      本文链接:https://www.haomeiwen.com/subject/wihvrqtx.html