1、使用代理

下载中间件

在middlewares.py文件中创建一个自己的中间件的类

class MyDaili( ):
    # 重写这个方法
    def process_request(self,request,spider):
        request. [\'proxy\'] = \'http://代理ip:代理端口\'

使用代理的时候需要在settings中打开中间件文件(55-57行),并且将中间件改为自己的写的

2、模拟登录

豆瓣

显示使用get提交获取登录令牌和验证码图片,再使用post提交账号密码

3、存储到mysql、mongodb

通过crawlspider经常爬取这些有分页、有详情页的

方法二:在pipelines.py中建立一个数据库链接类,然后再settings里面添加这个管道

# 创建链接数据库管道
class MySQLPipeline( ):
    
    # 打开数据库
    def open_spider(self,spider):
        self.conn = pymysql.Connect(host=\'39.108.136.163\', port=3306, user=\'root\', password=\'123\', db=\'day02\', charset=\'utf8\')
​
    def process_item(self,item,spider):
        # 创建sql语句
        sql = \'insert into movie_message(image_url,movie_ ,movie_score,movie_type,movie_director,movie_actor) value(%s,%s,%s,%s,%s,%s,%s);\' % (item[\'image_url\'],item[\'movie_ \'],item[\'movie_score\'],item[\'movie_type\'],item[\'movie_director\'],item[\'movie_actor\'])
        self.cursor = self.conn.cursor()
        # 添加数据
        try:
            self.cursor.execute(sql)
            self.conn.commit()
        except Exception as e:
            self.conn.rollback()
        
    # 关闭数据库
    def close_sppider(self,spider):
        self.conn.close()
​
-自己定制配置文件中的某些选项
​
        custom_settings = {
            \"ITEM_PIPELINES\": {
                \'movieproject.pipelines.MyMongoDbPipeline\': 302,
            }
        }

方法二:

  1. 在settings文件中配置数据库链接的配置参数

# 数据库的配置参数
DB_HOST = 主机地址
DB_PORT = 3306
DB_USER = 用户名
DB_PASSWORD = 密码
DB_NAME = 数据库名称
DB_CHARSET = \'utf8\'
  1. 然后在pipelines.py文件导入,使用get_project_settings()将settings.py文件读到内存变成一个字典

from scrapy.utils.project import get_project_settings
​
# 将配置文件读到内存中,是一个字典
settings = get_project_settings()
host = settings[\'DB_HOST\']
port = settings[\'DB_PORT\']
user = settings[\'DB_USER\']
password = settings[\'DB_PASSWORD\']
dbname = settings[\'DB_NAME\']
dbcharset = settings[\'DB_CHARSET\']
​
self.conn = pymysql.Connect(host=host, port=port, user=user, password=password, db=dbname, charset=dbcharset)
​
收藏 打印