流浪的二胡 发表于 2018-10-8 17:33

Python3 爬取豆瓣电影 学习笔记

本帖最后由 流浪的二胡 于 2018-10-8 17:34 编辑

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

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

这是要用到的两个字典

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:图片地址


网站内容类型是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'])



运行结果。      

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



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

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 的入门课{:1_918:}

村东头王大爷 发表于 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抓包工具!

好建议!{:1_919:}
页: [1] 2
查看完整版本: Python3 爬取豆瓣电影 学习笔记