欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python3-豆瓣电影数据爬取

程序员文章站 2022-05-28 23:32:29
...

python3.7爬取豆瓣电影实操
话不多说 上代码

抓包页面:
python3-豆瓣电影数据爬取


from urllib import request
import requests
import json
#构建爬虫类
class DoubanSpider:
    def __init__(self):
        self.templete_url = "https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start={}" #抓包 豆瓣电影url 分析headers 参数
        self.total = 1000  #暂时抓取1000条数据

    # 处理内容  获取相要的内容
    def get_content_list(self, dict_str):
        return dict_str['subjects']

    # 保存内容 将数据写入文本 并保存相应缩略图
    def save_content_list(self, content_list):
        with open("douban_movie.text", "a") as f:
            for content in content_list:
                request.urlretrieve(content['cover'],'doubancover/%s.jpg' % content['title'])
                f.write(json.dumps(
                    "评分:" + content['rate'] + " 名称:" + content['title'] + " 地址:" + content['url'] + " 缩略图:" + content[
                        'cover'], ensure_ascii=False))
                f.write("\n")
                print('保存成功')

    # 发送请求获得数据
    def parse_url(self, url):
        headers = {
            "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36",
            "referer": "https://movie.douban.com/explore",
        }
        response = requests.get(url, headers=headers)
        json_str = response.content.decode()
        dict_str = json.loads(json_str)
        return dict_str

    # 主方法 实现主要逻辑
    def run(self):
        num = 0
        total = self.total
        while num <= total:
            # 1 获取基础url
            url = self.templete_url.format(num)
            print(url)
            # 2 发送请求 获取相应
            dict_str = self.parse_url(url)
            # 3 数据处理
            content_list = self.get_content_list(dict_str)
            # print(content_list)
            # 4 数据保存
            self.save_content_list(content_list)
            # 5 构造下一页的url地址
            num += 20

if __name__ == '__main__':
    DoubanSpider().run()
    

最后运行效果
python3-豆瓣电影数据爬取
python3-豆瓣电影数据爬取
视频展示:

python3-豆瓣电影爬虫1

相关标签: python3爬虫