Python实例之抓取网易云课堂搜索数据(post方式json型数据)并保存到数据库
本实例实现了抓取网易云课堂中以‘java’为关键字的搜索结果,经详细查看请求的方式为post,请求的结果为JSON数据
具体实现代码如下:
import requests
import json
import pymysql
conn = pymysql.connect(host='localhost',
port=3306,
user='root',
passwd='',
db='test',
charset='utf8') #连接数据库
cur = conn.cursor() totlePage = 0 #初始化总页数
test = 0 #初始化数据总条数
url = 'http://study.163.com/p/search/studycourse.json'
headers = {'content-type': 'application/json'} def getData(count): #定义一个方法,返回json型请求结果
payload = {
'pageIndex':count, #页码为变量
'pageSize':'',
'keyword':'java',
'searchTimeType':'-1',
'orderType':'',
'priceType':'-1'
}
req = requests.post(url,data=json.dumps(payload),headers=headers)
res_json = json.loads(req.text)
return res_json cur.execute("DROP TABLE IF EXISTS neteasy") #如果表存在就删除
sqlc = "create table neteasy(id int(5),title varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci,\
provider varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci,price float(10),\
learnercount int(5)) CHARACTER SET utf8 COLLATE utf8_general_ci"
cur.execute(sqlc) #创建表 final = getData(1)['result']['list'] #判断是否有搜索结果
if final != None:
totlePage = getData(1)['result']['query']['totlePageCount'] #获取页码总数
for j in range(1,totlePage+1): #页码循环
final = getData(j)['result']['list']
for i in range(len(final)): #每页中的数据项循环
rt = final[i]['productName']
rp = final[i]['provider']
strpri = final[i]['originalPrice']
if final[i]['discountPrice'] != None:
strpri = final[i]['discountPrice']
rn = strpri
strcou = final[i]['learnerCount']
if strcou == None:
strcou = 0
rd = strcou
print('当前正在读取第'+str(j)+'页的第'+str(i+1)+'条数据...')
test += 1
sqli = 'insert into neteasy values(%s,%s,%s,%s,%s)'
cur.execute(sqli,(test,rt,rp,rn,rd)) #插入数据
print('保存完毕!共'+str(test)+'条数据')
cur.close()
conn.commit()
conn.close()
else:
print('没有查询结果,请换个关键词试试!')
Python实例之抓取网易云课堂搜索数据(post方式json型数据)并保存到数据库的更多相关文章
- Python爬虫入门教程 21-100 网易云课堂课程数据抓取
写在前面 今天咱们抓取一下网易云课堂的课程数据,这个网站的数据量并不是很大,我们只需要使用requests就可以快速的抓取到这部分数据了. 你第一步要做的是打开全部课程的地址,找出爬虫规律, 地址如下 ...
- 测试开发Python培训:抓取新浪微博评论提取目标数据-技术篇
测试开发Python培训:抓取新浪微博评论提取目标数据-技术篇 在前面我分享了几个新浪微博的自动化脚本的实现,下面我们继续实现新的需求,功能需求如下: 1,登陆微博 2,抓取评论页内容3,用正则表 ...
- 如何用Python网络爬虫爬取网易云音乐歌曲
今天小编带大家一起来利用Python爬取网易云音乐,分分钟将网站上的音乐down到本地. 跟着小编运行过代码的筒子们将网易云歌词抓取下来已经不再话下了,在抓取歌词的时候在函数中传入了歌手ID和歌曲名两 ...
- Python实例之抓取HTML中的数据并保存为TXT
本实例实现了抓取捧腹网中存储于html中的笑话数据(非JSON数据) 通过浏览器相关工具发现捧腹网笑话页面的数据存储在HTML页面而非json数据中,因此可以直接使用soup.select()方法来抓 ...
- python网络爬虫&&爬取网易云音乐
#爬取网易云音乐 url="https://music.163.com/discover/toplist" #歌单连接地址 url2 = 'http://music.163.com ...
- Python爬虫——request实例:爬取网易云音乐华语男歌手top10歌曲
requests是python的一个HTTP客户端库,跟urllib,urllib2类似,但比那两个要简洁的多,至于request库的用法, 推荐一篇不错的博文:https://cuiqingcai. ...
- Python实例之抓取淘宝商品数据(json型数据)并保存为TXT
本实例实现了抓取淘宝网中以‘python’为关键字的搜索结果,经详细查看数据存储于html文档中的js脚本中,数据类型为JSON 具体实现代码如下: import requests import re ...
- python网络爬虫抓取动态网页并将数据存入数据库MySQL
简述以下的代码是使用python实现的网络爬虫,抓取动态网页 http://hb.qq.com/baoliao/ .此网页中的最新.精华下面的内容是由JavaScript动态生成的.审查网页元素与网页 ...
- 《与小卡特一起学Python》Code3 抓取网页中的某个数据
import urllib2 file = urllib2.urlopen('http://common.cnblogs.com/script/jquery.js') message = file.r ...
随机推荐
- List、Set和数组之间的转换(转载)
本文转自 http://blog.sina.com.cn/s/blog_52fea7b60100s0hl.html 今天做项目中正好遇到该问题,就在网上查了下,这篇有些细节问题还是讲得挺好的. ★ 数 ...
- 幽灵自建的html5 的模板文件!
<!-- ,s555SB@@& :9H####@@@@@Xi 1@@@@@@@@@@@@@@8 ,8@@@@@@@@@B@@@@@@8 :B@@@@X3hi8Bs;B@@@@@Ah, , ...
- leetcode日记 HouseRobber I II
House Robber I You are a professional robber planning to rob houses along a street. Each house has a ...
- LeetCode 547 朋友圈
题目: 班上有 N 名学生.其中有些人是朋友,有些则不是.他们的友谊具有是传递性.如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友.所谓的朋友圈,是指所有朋友的 ...
- openvas scanner 服务未启动修复
近日发现scan某个网段好久都没有report,到服务器上检查,发现openvassd服务未成功启动. openvas-setup -f systemctl -l |grep openv openva ...
- Oracle学习DayTwo
一.创建表和管理表 1.表名和列名的命名规则 必须以字母开头必须在 1–30 个字符之间必须只能包含 A–Z, a–z, 0–9, _, $, 和 #必须不能和用户定义的其他对象重名必须不能是Orac ...
- linux在tomcat中指定jdk
setclasspath.sh和catalina.sh中写入 export JAVA_HOME=/qbtapp/jdk-8u111-linux-i586/jdk1.8.0_111export JRE_ ...
- Displaylink安卓驱动
Displaylink安卓驱动 2019年最新版V2.3.1
- json的xpath:简易数据查询
class JsonQuery(object): def __init__(self, data): super(JsonQuery, self).__init__() self.data = dat ...
- 搭建、访问ftp
FTP是文件传输协议,是在网络上进行文件传输的协议,使用的是C/S模式,属于网络传输协议的应用层.FTP是讲文件从一台计算机传送到另一台计算机上,不受操作系统的限制,TCP端口号是21,数据库端口号是 ...