HTTP协议与使用Python获取数据并写入MySQL

  一、Http协议

  二、Https协议

  三、使用Python获取数据

  (1)urlib

  (2)GET请求

  (3)POST请求

  四、爬取豆瓣电影实战

  1.思路

  (1)在浏览器中输入https://movie.douban.com/j/search_tags?type=movie会得到显示的电影的分类标签,下面以“热门”为例

{"tags":["热门","最新","经典","可播放","豆瓣高分","冷门佳片","华语","欧美","韩国","日本","动作","喜剧","爱情","科幻","悬疑","恐怖","成长"]}

  (2)在浏览器中输入https://movie.douban.com/进入豆瓣首页,然后下拉到“最近热门电影”,然后点击“更多”,浏览器中显示的url为https://movie.douban.com/explore#!type=movie&tag=热门&sort=recommend&page_limit=20&page_start=0,即表示热门电影的第一页中的20部影片。

  (3)下拉至底部,点击“显示更多”一下,则此时的url变为https://movie.douban.com/explore#!type=movie&tag=热门&sort=recommend&page_limit=20&page_start=20,也就表示第二页中的20部影片。

  (4)在浏览器中输入下面的url会得到20个json格式的字符串:https://movie.douban.com/j/search_subjects?type=movie&tag=热门&sort=recommend&page_limit=20&page_start=0。

  (5)针对每个url,如果返回的结果中存在数据,那么就将page_start增加20继续执行GET请求,直到不再返回数据为止。

  2.代码实现

import urllib.request
from urllib import parse
import json

# 获得全部电影标签
url = ‘https://movie.douban.com/j/search_tags?type=movie‘
# 需要将中文汉字转化成十六进制的形式,否则会报编码错误
print(parse.quote(‘热门‘))
request = urllib.request.Request(url=url)
response = urllib.request.urlopen(request, timeout=20)
# 获得json形式的字符串
result = response.read()
print(result)
# 将json形式的字符串解析成字典
result = json.loads(result)
print(result)
# 将取字典的标签字段存储到列表中
tags = result[‘tags‘]
print(tags)
# 定义一个列表存储电影的基本信息
movies = []
# 分别处理每个tag
for tag in tags:
    print(tag)
    tag = parse.quote(tag)
    print(tag)
    start = 0
    # 不断请求,直到返回结果为空
    while True:
        # 拼接需要请求的url
        url = ‘https://movie.douban.com/j/search_subjects?‘               ‘type=movie&tag=‘ + tag + ‘&sort=recommend&page_limit=20&page_start=‘ + str(start)
        print(url)
        request = urllib.request.Request(url=url)
        response = urllib.request.urlopen(request, timeout=20)
        # 获得json形式的字符串
        result = response.read()
        print(result)
        # 将json形式的字符串解析成字典
        result = json.loads(result)
        print(result)
        # 将取字典的标签字段存储到列表中
        result = result[‘subjects‘]
        print(result)
        # 循环跳出条件
        if len(result) ==0:
            break
        # 将每一条记录都添加到movies列表中
        for item in result:
            movies.append(item)
        # 修改起始位置,相当于点击"显示更多"
        start += 20

print(len(movies))

原文地址:https://www.cnblogs.com/BigJunOba/p/9454316.html

时间: 2024-11-07 02:33:53

HTTP协议与使用Python获取数据并写入MySQL的相关文章

python执行shell获取硬件参数写入mysql

最近要获取服务器各种参数,包括cpu.内存.磁盘.型号等信息.试用了Hyperic HQ.Nagios和Snmp,它们功能都挺强大的,但是于需求不是太符,亦或者太heavy. 于是乎想到用python执行shell获取这些信息,python执行shell脚本有以下三种方法: 1. os.system() os.system('ls')#返回结果0或者1,不能得到命令的输出 2. os.popen() output = os.popen('ls') print output.read()#打印出的

用Nodejs+Express搭建web,nodejs路由和Ajax传数据并返回状态,nodejs+mysql通过ajax获取数据并写入数据库

小编自学Nodejs,看了好多文章发现都不全,而且好多都是一模一样的 当然了,这只是基础的demo,经供参考,但是相信也会有收获 今天的内容是用Nodejs+Express搭建基本的web,然后呢nodejs路由和Ajax之间的数据传输,也就是表单提交,然后在用nodejs把数据写入mysql数据库 用到的东西比较多,但是还是很有趣的 1.安装node.js 安装node.js,直接去官网下载然后根据需求点击下一步就好了 Node.js安装包及源码下载地址为:https://nodejs.org

规模指数介绍,如何使用Python获取数据

接触投资的人,都会或多或少地听到:中证100.中证200.沪深300.中证500.中证700.中证800.中证1000这些金融简称--但其实,很多人并不知道这些都代表什么?对自己的交易有什么意义? 中证100也好,中证700也罢,其实这些都是中证指数编制反映市场的规模指数.那么,这些指数具体代表什么股票的市场表现呢? 首先,我们必须先明白中证100,沪深300(中证300),以及中证800这三个关键指标: 中证100,沪深市场市值前100大的股票(比如四大行.两桶油): 沪深300,沪深市场市值

requests从api中获取数据并存放到mysql中

python的requests库是一个非常强大的库,requests的安装方法十分简单,用: pip install requests 即可安装requests,安装成功后: import requests 即可导入requests模块,requests有get和post两种方法: 1.requests.get()用法: url = "http://xxx" a_content = requests.get(url) aa = a_content.content #.content和.

scrapy实战8关于数据异步写入mysql:

环境:python3 爬取网址:腾讯社招(http://hr.tencent.com/position.php?keywords=&tid=0&start=0#a)总共2202条数据 pipelines.py 1 from twisted.enterprise import adbapi 2 import pymysql 3 import pymysql.cursors 4 5 6 class MysqlTwistedPipeline(object): 7 def __init__(sel

asp.net mvc Areas 母版页动态获取数据进行渲染

经常需要将一些通用的页面元素抽离出来制作成母版页,但是这里的元素一般都是些基本元素,即不需要 进行后台数据交换的基本数据,但是对于一些需要通过后台查询的数据,我们应该怎么传递给前台的母版页呢 这里描述的是对于多个页面统一的数据部分,即多个页面中均保持一致且与各个页面无其他关系的页面, 虽然我们可以通过razor使用C#语言来获取数据并写入页面中,但这就违背我们view中尽可能不处理数据的意愿了 所以给出的解决方案是,通过ViewBag将需要的数据写入页面中,将读取数据的操作提取到baseCont

使用python获取webservice数据并输出到文件

上头要求设置TCP备案检查,给了个WEBSERVICE接口.查了2天,才确认还是python比较好用,我这水平也就写个脚本把数据导出,过滤检索还是用的shell.写此文备忘.WEBSERVICE接口脚本如下: #! /usr/bin/python #coding:utf-8 import codecs import suds def main(file_name, out_file): url = 'http://121.14.4.210:8088/icpautobj/ws/getIcp?wsd

Python 获取接口数据,解析JSON,写入文件

Python 获取接口数据,解析JSON,写入文件 用于练手的例子,从国家气象局接口上获取JSON数据,将它写入文件中,并解析JSON: 总的来说,在代码量上,python代码量要比java少很多.而且python看起来更直观一些: 以下是代码: import types import urllib2 import json duan ="--------------------------" #在控制台断行区别的 #利用urllib2获取网络数据 def registerUrl():

Python开发实战教程(8)-向网页提交获取数据

来这里找志同道合的小伙伴!↑↑↑ Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习Python这门语言. 本次课程是在掌握python基础之上进行的.基础没有学习的话建议先查看文章学习基础目录:Python开发实战系列教程-链接汇总,持续更新.进行学习. 最近几天感冒中,四肢乏力以及最近比较忙导致,更新较慢.还请见谅. 概述 很多时候我们需要给网