python获取网页数据后写入mysql_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))

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

python httplib get和post获取数据

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

随机推荐

Javascript与ECMAScript

我们经常习惯性认为Javascript就是ECMAScript,但其实不是这样的. ECMAScript是一种脚本在语法和语义上的标准. 主要包括:语法.类型.语句.关键字.保留字.操作符.对象. 它 ...

CXF发布webService服务以及客户端调用

这篇随笔内容是CXF发布webService服务以及客户端调用的方法 CXF是什么? 开发工作之前需要下载CXF和安装 下载地址:http://cxf.apache.org 安装过程: <1&g ...

iOSDate时间格式(转)

在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理.例如: //实例化一个NSDateFormatter对象 NSDateForma ...

Android拓展系列(12)--使用Gradle发布aar项目到JCenter仓库

目的 发布自己的android library(也就是aar)到公共的jcenter仓库,所有的人都能用gradle最简单的方式引用. 为什么选择jcenter,它兼容maven,而且支持更多形式仓库 ...

Redis操作Hash工具类封装,Redis工具类封装

Redis操作Hash工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>> ...

用MATLAB生成模糊控制离线查询表

实时采样得到的数据经过模糊化处理后输入机器,通过查询模糊规则表便可得到应有的输出模糊量,从而避免了近似推理过程.实际应用中,特别是在控制系统较为简单而采用单片机控制时,常常采用这种查表法. 模糊控制表 ...

【Win】使用L2TP出现809错误

1.环境:win7/10 2.解决: a.修改注册表(新建一个文本文件,复制以下内容,保存后文件扩展名改为.reg,双击运行文件.) Windows Registry Editor Version 5 ...

图像的线性空间滤波matlab实现

1.线性空间滤波函数Z = imfilter(X,H,option1,option2,...) X为输入图像矩阵,H为m*n维的掩膜矩阵,H中的数据类型必须是double类型.掩膜矩阵可以是用户定义, ...

jmeter的non-gui模式的使用

jmeter的non-gui模式的使用,待补充

你可能感兴趣的:(python获取网页数据后写入mysql_HTTP协议与使用Python获取数据并写入MySQL)