zoukankan      html  css  js  c++  java
  • Python爬虫学习(2)

    爬取网页异步js渲染的数据,个人想到两种思路:

    1、模拟请求得到返回的json数据,解析后爬取需求数据。

    2、模拟浏览器加载完成后再正则匹配获取页面需求数据。

    下面是第一种方法练习代码,后续学习中。。。

     1 # !/usr/bin/env python
     2 # -*- coding: UTF-8 -*-
     3 # addUser: Gao
     4 # addTime: 2018-01-28 22:06
     5 # description: python爬虫练习 获取js渲染的数据
     6 
     7 import urllib, urllib2, json, os
     8 
     9 # 获取数据保存路径
    10 FileName = 'Download/BiliBili'
    11 
    12 # 初始化当前页码
    13 Page = 1
    14 
    15 """
    16 请求页面数据
    17 """
    18 def parseUrl():
    19     url = "https://bangumi.bilibili.com/web_api/season/index_global?page=1&page_size=20&version=0&is_finish=0&start_year=0&tag_id=81&index_type=1&index_sort=0&quarter=0"
    20     headers = {
    21         "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
    22     }
    23     parameters = {
    24         'page': Page,
    25         'page_size': 20,
    26         'version': 0,
    27         'is_finish': 0,
    28         'start_year': 0,
    29         'tag_id': 81,
    30         'index_type': 1,
    31         'index_sort': 0,
    32         'quarter': 0,
    33     }
    34     data = urllib.urlencode(parameters)
    35     request = urllib2.Request(url, data=data, headers=headers)
    36     response = urllib2.urlopen(request)
    37     js_data = response.read()
    38     content = json.loads(js_data)
    39     list = content['result']['list']
    40     for row in list:
    41         saveImg(row['cover'], row['title']+'.jpg')
    42 
    43 
    44 """
    45 保存图片
    46 """
    47 def saveImg(imgUrl, imgName='img.jpg'):
    48     # 图片路径
    49     imgPath = os.path.join(FileName, imgName)
    50 
    51     # 获取路径下图片信息
    52     req = urllib2.urlopen(imgUrl)
    53     buf = req.read()
    54 
    55     # 写入文件
    56     with open(imgPath, 'wb+') as f:
    57         f.write(buf)
    58 
    59 
    60 """
    61 判断文件夹是否存在
    62 """
    63 if not os.path.exists(os.path.join(os.getcwd(), FileName)):
    64     # 新建文件夹
    65     os.mkdir(os.path.join(os.getcwd(), FileName))
    66 
    67 parseUrl()
  • 相关阅读:
    滤波和减采样的互换
    LwIP情景示例
    [redis] redis 对string类型数据操作
    [ExtJs] ExtJs4.2 数据模型Ext.data.Model学习
    [生活] 90年前后出生的人现状如何?
    【java】java内存模型(2)--volatile内存语义详解
    【java】java内存模型 (1)--基础
    [extjs] ExtJS 4.2 开发环境搭建
    强烈推荐:240多个jQuery插件
    使用CXF为webservice添加拦截器
  • 原文地址:https://www.cnblogs.com/MrGaoyi/p/8372948.html
Copyright © 2011-2022 走看看