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

资源简介

豆瓣电影数据集12万+用户影评40万+爬虫程序(两个csv,一个db数据库) 最近在学习爬虫,辛辛苦苦爬了几天,分享给大家。。可以用来做推荐系统 觉得好的朋友帮忙评论下打个5星~ 可以看下这篇文章 https://blog.csdn.net/qq_37717661/article/details/81458779

资源截图

代码片段和文件信息

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.

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        7373  2018-08-07 23:25  douban.py
     目录           0  2018-08-21 16:33  __MACOSX\
     文件         210  2018-08-07 23:25  __MACOSX\._douban.py
     文件    12239589  2018-08-10 00:10  user.csv
     文件    78450688  2018-08-06 16:22  douban.db
     文件         814  2018-08-06 16:22  __MACOSX\._douban.db
     文件    11426666  2018-08-08 20:38  movie.csv

评论

共有 条评论