一、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))

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

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

    最近要获取服务器各种参数,包括cpu.内存.磁盘.型号等信息.试用了Hyperic HQ.Nagios和Snmp,它们功能都挺强大的,但是于需求不是太符,亦或者太heavy. 于是乎想到用python ...

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

    小编自学Nodejs,看了好多文章发现都不全,而且好多都是一模一样的 当然了,这只是基础的demo,经供参考,但是相信也会有收获 今天的内容是用Nodejs+Express搭建基本的web,然后呢no ...

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

    小编自学Nodejs,看了好多文章发现都不全,而且好多都是一模一样的 当然了,这只是基础的demo,经供参考,但是相信也会有收获 今天的内容是用Nodejs+Express搭建基本的web,然后呢no ...

  4. Scrapy爬取豆瓣图书数据并写入MySQL

    项目地址 BookSpider 介绍 本篇涉及的内容主要是获取分类下的所有图书数据,并写入MySQL 准备 Python3.6.Scrapy.Twisted.MySQLdb等 演示 代码 一.创建项目 ...

  5. python获取数据网页数据并创建文件夹保存(基于python3.6)

    from urllib.parse import urljoin import urllib.request from bs4 import BeautifulSoup import os impor ...

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

    python的requests库是一个非常强大的库,requests的安装方法十分简单,用: pip install requests 即可安装requests,安装成功后: import reque ...

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

    环境:python3 爬取网址:腾讯社招(http://hr.tencent.com/position.php?keywords=&tid=0&start=0#a)总共2202条数据 ...

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

    经常需要将一些通用的页面元素抽离出来制作成母版页,但是这里的元素一般都是些基本元素,即不需要 进行后台数据交换的基本数据,但是对于一些需要通过后台查询的数据,我们应该怎么传递给前台的母版页呢 这里描述 ...

  9. python httplib get和post获取数据

    httplib 下的 status http请求的状态  200 404 500... reason 返回答复 OK或者 FAULRE read()  读取内容 get方法: #!/usr/bin/e ...

随机推荐

  1. C# 事件 Event

    一.事件是什么 微软的定义:和委托类似,事件是后期绑定机制. 实际上,事件是建立在对委托的语言支持之上的.事件是对象用于(向系统中的所有相关组件)广播已发生事情的一种方式. 任何其他组件都可以订阅事件 ...

  2. Linux下几种常见压缩方式测试对比

    目录 Linux下几种常见压缩方式测试对比 参考 简介 测试 总结 Linux下几种常见压缩方式测试对比

  3. MariaDB简单操作

    RHEL7之后操作系统带的数据库都是mariadb,跟mysql一样用 1.安装客户端和服务端 [root@localhost ~]# yum install mariadb mariadb-serv ...

  4. php常用函数(第一版)

    1.array_slice 作用:数组分页函数 案例:$output  =  array_slice ( $input , - 2 ,  1 ); 2.array_column 作用:数组根据值取出一 ...

  5. Scala 学习笔记之集合(6)

    object CollectionDemo7 { def main(args: Array[String]): Unit = { //数组使用 val arr = Array("red&qu ...

  6. 人生,还没困难到"非死不可"

    最近半个月,美国著名的Facebook公司,出了好几件大事.第一件事,2019年9月19日,一名陈姓中国软件工程师在Facebook加州总部跳楼自杀.第二件事,2019年10月4日,一名软件工程师在座 ...

  7. 从零开始入门 K8s | 可观测性:监控与日志

    作者 | 莫源  阿里巴巴技术专家 一.背景 监控和日志是大型分布式系统的重要基础设施,监控可以帮助开发者查看系统的运行状态,而日志可以协助问题的排查和诊断. 在 Kubernetes 中,监控和日志 ...

  8. java IO、NIO、AIO详解

    概述 在我们学习Java的IO流之前,我们都要了解几个关键词 同步与异步(synchronous/asynchronous):同步是一种可靠的有序运行机制,当我们进行同步操作时,后续的任务是等待当前调 ...

  9. 使用foreach语句对数组成员进行遍历

    /*** 使用foreach语句对数组成员进行遍历* **/ public class ForeachDemo { public static void main(String[] args) { i ...

  10. Flask中的cookie和session

    from flask import Flask app = Flask(__name__) 一.cookie from flask import Flask, make_response, reque ...