本文共 2415 字,大约阅读时间需要 8 分钟。
使用fiddler进行抓包分析
打开fiddler设置认证证书 开始使用fiddler进行分析 鼠标点击刚刚哪个请求右键选中copy这个选项在选择Just URL这个选项拷贝url地址我们把拷贝的url复制过来到浏览器看一下 这里可以看到我们要的数据就在网页里面 page_limit=20这里是 偏移量的意思这里面可以改变他的值提取最大 一页就是20个数据 page_start=0 这里是指的是页数 当前第几页**
.
import requestsimport pymysqlimport json#伪装头headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36'}#每一页20url = 'https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=0'url_get = requests.get(url=url,headers=headers)#调用ge方法下载这个字典josn_url = url_get.json()#使用json方法将respone 对象转为列表/字典coteent = 0list_url = josn_url['subjects']#循环遍历for list_s in list_url: #标题 print(list_s['title']) #评分 print(list_s['rate'])#这里我们已经提取好了我们把数据保存到mysql中#首先我们要创建一个数据库一个数据表还有数据字段#这里在创建id的时候勾选all这选项在选保存执行就可以了因为你不选all不能自己自增序列
import jsonimport requestsimport pymysqldef get_data(): url = 'https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=330&page_start=0' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36' } json_data = requests.get(url, headers=headers) #print(json_data.text) data = json_data.text json_data = json.loads(data) subjects = json_data['subjects'] for i in subjects: name = i['title'] #print(name) rate = i['rate'] #print(rate) url_s = i['url'] #print(url_s) # 连接数据库 db = pymysql.connect(host='localhost', user='root', password='root', port=3306, db='text') # 获取下标 cursor = db.cursor() # sql语句插入 sql = "INSERT INTO t_movie(movie_rate,movie_name,movie_url) VALUES(%s,%s,%s)" try: cursor.execute(sql, (name, rate, url_s)) db.commit() print('插入成功') except: cursor.rollback() print('插入失败') cursor.close()def main(): get_data()if __name__ == '__main__': main()
截图效果图如下
总结
知识点主要难度是数据库 要了解一点数据库的知识还有sql语句 这里插入一直插入不进去,原来我少了一个最关键的参数值 原来的sql 写法一直插入失败忘了把后面的值的参数传入进去了。。。 所以插入失败没有对应的值 正确写法sql = "INSERT INTO t_movie(movie_rate,movie_name,movie_url) VALUES(%s,%s,%s)" #在传入进去 cursor.execute(sql, (name, rate, url_s)) #最后在在关闭掉数据库 db.commit()
码字不易啊,喜欢的朋友可以关注一下,一位爱玩爬虫的学生
一起学爬虫呀!!!转载地址:http://qoywi.baihongyu.com/