• 大小: 42.48MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-17
  • 语言: 其他
  • 标签: 数据集  

资源简介

豆瓣电影film数据集10万!

资源截图

代码片段和文件信息

import logging
import random
import string
import requests
import time
from collections import deque
from urllib import parse
import pandas as pd
import re

from settings import User_AgentsAgent_IP


class DoubanSpider(object):
    “““豆瓣爬虫“““
    def __init__(selfformTypecountrygenres):
        # 基本的URL
        self.base_url = ‘https://movie.douban.com/j/new_search_subjects?sort=T&range=010&‘
        self.full_url = self.base_url + ‘{query_params}‘
        # 从User-Agents中选择一个User-Agent
        self.headers = {‘User-Agent‘:random.choice(User_Agents)}  
        self.proxies = {‘http‘:random.choice(Agent_IP)} 
        # 可选参数 
        self.form_tag = form  # 影视形式
        self.type_tag = Type  # 类型
        self.countries_tag =  country # 地区
        self.genres_tag = genres #特色
        #默认参数
        self.sort = ‘T‘  # 排序方式默认是T表示热度
        self.range = 0 10  # 评分范围

    def encode_query_data(self):
        “““对输入信息进行编码处理“““
        
        if not (self.form_tag and self.type_tag and self.countries_tag and self.genres_tag):
            all_tags = ‘‘
        else:
            all_tags = [self.form_tag self.type_tag self.countries_tag self.genres_tag]
        query_param = {
            ‘sort‘: self.sort
            ‘range‘: self.range
            ‘tags‘: all_tags
        }

        # string.printable:表示ASCII字符就不用编码了
        query_params = parse.urlencode(query_param safe=string.printable)
        # 去除查询参数中无效的字符
        invalid_chars = [‘(‘ ‘)‘ ‘[‘ ‘]‘ ‘+‘ ‘\‘‘]
        for char in invalid_chars:
            if char in query_params:
                query_params = query_params.replace(char ‘‘)
        # 把查询参数和base_url组合起来形成完整的url
        self.full_url = self.full_url.format(query_params=query_params) + ‘&start={start}‘
        ‘‘‘
        query_params = ‘tags=‘+str(self.form_tag)+‘‘+str(self.type_tag)+‘‘+str(self.countries_tag)+‘‘+\
            str(self.genres_tag)
        self.full_url = self.full_url.format(query_params=query_params) + ‘&start={start}‘
        ‘‘‘

    def download_movies(self offset):
        “““下载电影信息
        :param offset: 控制一次请求的影视数量
        :return resp:请求得到的响应体“““
        full_url = self.full_url.format(start=offset)
        print(full_url)
        resp = None
        try:
            #方法1.USER_AGENT配置仿造浏览器访问 headers
            #方法2.伪造Cookie,解封豆瓣IP cookies = jar
            #jar = requests.cookies.RequestsCookieJar()  
            #jar.set(‘bid‘ ‘ehjk9OLdwha‘ domain=‘.douban.com‘ path=‘/‘)
            #jar.set(‘11‘ ‘25678‘ domain=‘.douban.com‘ path=‘/‘)
            #方法3.使用代理IP proxies
            resp=requests.get(full_urlheaders=self.headersproxies=self.proxies)
        except Exception as e:
            print(resp)
            logging.error(e)
        return resp

    def get_movies(self resp):
        “““获取电影信息
        :param resp: 响应体
        :return movies:爬取到的电影信息“““
        if resp:
            if resp.status_code == 200:
                # 获取响应文件中的电影数据
                movies = dict(resp.

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2020-01-05 21:57  新建文件夹\
     文件        7373  2018-08-07 23:25  新建文件夹\Crawler program.py
     文件    78450688  2018-08-06 16:22  新建文件夹\douban.db
     文件    11426666  2018-08-08 20:38  新建文件夹\movie_10.csv
     文件    12239589  2018-08-10 00:10  新建文件夹\use_10.csv
     目录           0  2019-07-03 22:32  新建文件夹\__MACOSX\
     文件         814  2018-08-06 16:22  新建文件夹\__MACOSX\._douban.db
     文件         210  2018-08-07 23:25  新建文件夹\__MACOSX\._douban.py

评论

共有 条评论