吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4761|回复: 14
收起左侧

[Python 转载] Python3 爬取豆瓣电影 学习笔记

  [复制链接]
流浪的二胡 发表于 2018-10-8 17:33
本帖最后由 流浪的二胡 于 2018-10-8 17:34 编辑

最近新学了一个基础的爬虫,很基础~~所以会简单些。

1.png https://movie.douban.com/explore#!type=movie&tag=%E7%83%AD%E9%97%A8&sort=time&page_limit=20&page_start=0
要爬取网站中需要的信息用红色箭头标出。
4.png 3.png
这是要用到的两个字典

subjects中
subjects":[{"rate":"5.7","cover_x":1923,"title":"怪兽","url":"https:\/\/movie.douban.com\/subject\/30317800\/","playable":true,"cover":"https://img3.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2533963360.jpg","id":"30317800","cover_y":3000,"is_new":true}
rate:评分
title:标题
url:网址
cover:图片地址

2.png
网站内容类型是json对象,后续要用到import json包中的loads方法进行解码。

from urllib import request
import json      #豆瓣电影中content-type是json对象,因此需要用到json对象中的loads方法将其解码。
import parser

url="https://movie.douban.com/j/search_tags?type=movie&source="
req = request.Request(url)            #发起请求
res = request.urlopen(req).read().decode('utf-8')      #访问并获取网站内容           #将字节流转化成utf-8编码
#print(res,type(res)) 查看res的内容、类型

json_res = json.loads(res)            #对res中的数据进行解码,转换成dict类型
#print(json_res,type(json_res))

tags = json_res['tags']
print(tags)

for tag in tags:
    tag = {
        'tag':tag
    }
    tag_url = 'https://movie.douban.com/j/search_subjects?type=movie&' \
              'tag=%E7%83%AD%E9%97%A8&sort=time&page_limit=20&page_start=0'
req = request.Request(tag_url)
    response = request.urlopen(req).read().decode('utf-8')
    response_dict = json.loads(response)
    for movie in response_dict['subjects']:
        print('rate',movie['rate'],'title',movie['title'])  


6.png
运行结果。      

后续完善的话可以通过user-agent来模拟浏览器访问
5.png


暂时想到这么多,再接再厉 ~喽~

免费评分

参与人数 3吾爱币 +5 热心值 +2 收起 理由
wushaominkk + 3 + 1 加油加油
sec821 + 1 + 1 我很赞同!
为海尔而战 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

WA554788219 发表于 2018-10-8 18:34
谢谢分享
beisimm 发表于 2018-10-11 16:14
最近学的, 爬取位置几乎一样
import requests
import json

url = "https://movie.douban.com/j/search_subjects"

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
}
for page_start in range(0,101,20):
    params = {
        "type": "movie",
        "tag": "热门",
        "sort": "recommend",
        "page_limit": "20",
        "page_start": "page_start",
    }

    response = requests.get(url, headers=headers, params=params)

    content_json = response.content.decode("utf-8")
    content = json.loads(content_json)

    for movie in content['subjects']:
        print(content['subjects'].index(movie), movie['title'], movie['rate'])
快乐小风 发表于 2018-10-8 17:54
加油加油 , 感觉爬豆瓣电影是每个学习 py 的入门课
村东头王大爷 发表于 2018-10-8 18:32
多谢分享。
music984 发表于 2018-10-8 18:37
有时间研究一下 谢谢啦!
天才第一步 发表于 2018-10-8 18:56
想学,有没有完整的教程
xiaowanzi52 发表于 2018-10-8 19:03
厉害 小活板  ,你为何这么优秀呢,告诉我
_小白 发表于 2018-10-8 19:41
还在学python基础……
Autom 发表于 2018-10-9 08:58
多用fiddler抓包工具!
 楼主| 流浪的二胡 发表于 2018-10-9 10:06
Autom 发表于 2018-10-9 08:58
多用fiddler抓包工具!

好建议!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 03:16

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表