主页 > 编程资料 > Python >
发布时间:2018-09-28 作者:apizl 阅读:407次

在Scrapy 中使用代理的情况一般分两种, 一种是本身必须启用代理才能访问的站点, 不启用代理的话结果就像图片中这样:

Scrapy Proxy

不启用代理根本访问不了别说提取数据了,这种情况下需要在第一次发起请求时启用代理,可以通过重写 make_requests_from_url 方法实现:

def make_requests_from_url(self, url):
    request = scrapy.Request(url, meta={"proxy": "http://127.0.0.1:9999"})
    return request

结果:

Scrapy Proxy





另一种情况, 一般用来绕过IP限制的, 一些站点会限制同一IP的访问频率之类的, 这种情况只要在发起请求前使用代理即可, 比如在parse方法触发新请求时使用:

def parse(self, response):
    url = ...
    yield scrapy.Request(url, meta={"proxy": "http://127.0.0.1:9999"})


通过meta参数指定代理即可, 根据url是HTTPS的则代理也要使用HTTPS.


关键字词: