scrapy—下载中间键

主要目的是为了使用代理,以及模拟的useragent

1:在settings.py 文件中设置

DOWNLOADER_MIDDLEWARES = {
    'xxx.middlewares.RandomUserAgent': 100,
    'xxx.middlewares.RandomProxy': 200,

}

模拟的USER_AGENTS

USER_AGENTS = [

    'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)',
    'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2)',
    'Opera/9.27 (Windows NT 5.2; U; zh-cn)',
    'Opera/8.0 (Macintosh; PPC Mac OS X; U; en)',
    'Mozilla/5.0 (Macintosh; PPC Mac OS X; U; en) Opera 8.0',
    'Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; M032 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
    'Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13'

]


代理设置:

PROXIES = [

        {"ip_port" :"xxxxx:xxx", "user_passwd" : "xxx:xxx"},
        #{"ip_prot" :"xxxx:xxxx", "user_passwd" : ""}

]


在爬虫目录下创建文件:middlewares.py

import random
import base64


from settings import USER_AGENTS
from settings import PROXIES


# 随机的User-Agent
class RandomUserAgent(object):
    def process_request(self, request, spider):
        useragent = random.choice(USER_AGENTS)
        #print useragent
        request.headers.setdefault("User-Agent", useragent)


class RandomProxy(object):
    def process_request(self, request, spider):
        proxy = random.choice(PROXIES)


        if proxy['user_passwd'] is None:
            # 没有代理账户验证的代理使用方式
            request.meta['proxy'] = "http://" + proxy['ip_port']


        else:
            # 对账户密码进行base64编码转换
            base64_userpasswd = base64.b64encode(proxy['user_passwd'])
            # 对应到代理服务器的信令格式里
            request.headers['Proxy-Authorization'] = 'Basic ' + base64_userpasswd


            request.meta['proxy'] = "http://" + proxy['ip_port']

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scrapy是一个基于Python的开源网络爬虫框架,可以用于抓取和提取特定网站的数据。 要使用Scrapy下载HTML,首先需要创建一个Scrapy项目。可以通过使用命令行工具scrapy命令来创建一个新项目,例如: `scrapy startproject myproject` 接下来,在项目的spiders文件夹中创建一个新的Spider文件,用于定义要爬取的网站和相应的解析规则。在Spider中,可以使用Scrapy提供的下载器Middleware来下载HTML。 在Spider类中,可以定义一个名为start_requests的方法。在此方法中,可以使用Scrapy提供的Request对象来发送HTTP请求,以下载HTML页面。例如: ```python import scrapy class MySpider(scrapy.Spider): name = 'myspider' def start_requests(self): urls = [ 'https://www.example.com/page1', 'https://www.example.com/page2', 'https://www.example.com/page3', ] for url in urls: yield scrapy.Request(url=url, callback=self.parse) def parse(self, response): html = response.text # 在这里对HTML进行解析和提取数据的操作 yield { 'url': response.url, 'html': html, } ``` 在上面的示例代码中,start_requests方法定义了要爬取的URL列表,并使用yield语句生成了多个Request对象。对于每个请求,Scrapy将调用parse方法进行解析。 在parse方法中,可以使用response对象的text属性获取HTML页面的内容。在这里,可以使用任何你喜欢的HTML解析库来提取所需的数据。 最后,可以通过使用命令行工具scrapy crawl启动Spider,开始爬取并下载HTML。例如: `scrapy crawl myspider` 通过以上步骤,你可以使用Scrapy轻松地下载HTML页面并进行数据提取和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值