pythontcp协议传递数据到mysql_HTTP协议与使用Python获取数据并写入MySQL

本文介绍了如何使用Python的HTTP库urllib获取豆瓣电影的热门标签及电影信息,并通过TCP协议将数据存储到MySQL数据库。首先讲解了HTTP协议的基础知识,然后展示了从豆瓣电影网站抓取数据的步骤,包括解析URL、发送GET请求和处理JSON响应。最后,文章暗示了数据将通过TCP协议传递到MySQL数据库。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值