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()
  • 相关阅读:
    svn服务器安装
    flex 协同
    大尾端 小尾端
    UNIX下c语言的图形编程curses.h 函式库(2)
    vs2005设置
    client 连接 host —— 虚拟机
    fedora 连网问题。。
    pv ip uv
    checking for XML::Parser... configure: error: XML::Parser perl module is required for intltool
    UNIX下c语言的图形编程curses.h 函式库
  • 原文地址:https://www.cnblogs.com/MrGaoyi/p/8372948.html
Copyright © 2011-2022 走看看