第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

Scrapy使用入門及爬蟲代理配置

本文通过一个简单的项目实现Scrapy采集流程。希望通过该项目对Scrapy的使用方法和框架能够有帮助。

1. 工作流程

重点流程如下:

  • 创建一个Scrapy项目。

  • 创建一个爬虫来抓取网站和处理数据。

  • 通过命令行将采集的内容进行分析。

  • 将分析的数据保存到MongoDB数据库。

2. 准备环境

安装好Scrapy框架,MongoDB的和PyMongo库。

3. 爬虫项目实现

(1)创建一个Scrapy项目,文件项目可以直接用

scrapy

命令生成,命令如下所示:

scrapy startproject教程复制代码

(2)爬虫是自己定义的类,Scrapy通过该类从网页里采集内容分析数据的结果。不过这个类必须继承Scrapy提供的蜘蛛类

scrapy.Spider

还要定义爬虫的名称和起始请求,以及怎样处理爬取后的数据。

也可以使用命令行创建一个蜘蛛比如要生成行情这个蜘蛛,可以执行如下命令:

scrapy genspider 复制代码

进入刚才创建的教程文件夹,执行然后

genspider

命令。第一个参数是爬虫的名称,第二个参数是网站域名。执行完毕之后,蜘蛛文件夹中多了一个quotes.py,它就是刚刚创建的蜘蛛,内容如下所示:

import scrapy 
class  QuotesSpider (scrapy.Spider):
     name = “quotes”
     allowed_domains = [ “quotes.toscrape.com” ] 
    start_urls = [ 'http://quotes.toscrape.com/' ] 
    def  parse (self,response):
        通过复制代码

(3)采集过程中,目标网站会限制爬虫的请求访问频率,必须使用爬虫代理

在项目中新建middlewares.py文件(./项目名/middlewares.py)

#! -*- encoding:utf-8 -*-
        import base64            
        import sys
        import random
        PY3 = sys.version_info[0] >= 3
        def base64ify(bytes_or_str):
            if PY3 and isinstance(bytes_or_str, str):
                input_bytes = bytes_or_str.encode('utf8')
            else:
                input_bytes = bytes_or_str
            output_bytes = base64.urlsafe_b64encode(input_bytes)
            if PY3:
                return output_bytes.decode('ascii')
            else:
                return output_bytes
        class ProxyMiddleware(object):                
            def process_request(self, request, spider):
                # 代理服务器(产品官网 www.16yun.cn)
                proxyHost = "t.16yun.cn"
                proxyPort = "31111"
                # 代理验证信息
                proxyUser = "username"
                proxyPass = "password"
                request.meta['proxy'] = "http://{0}:{1}".format(proxyHost,proxyPort)
                # 添加验证头
                encoded_user_pass = base64ify(proxyUser + ":" + proxyPass)
                request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass                    
                # 设置IP切换头(根据需求)
                tunnel = random.randint(1,10000)
                request.headers['Proxy-Tunnel'] = str(tunnel)

修改项目配置文件 (./项目名/settings.py)

DOWNLOADER_MIDDLEWARES = {
        '项目名.middlewares.ProxyMiddleware': 100,
    }


點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消