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()

 

posted @ 2018-01-28 23:55  MrGaoyi  阅读(156)  评论(0编辑  收藏  举报