天天看点

使用 Python Scrapy 爬取微博内容【二】

接上文。

根据实验,微博对于同一IP/Cookiess连续爬取允许时间大约为5min,所以为了连续的爬取,拥有多个账号&代理&User_Agent 是十分必要的。

账号这个我不多说,淘宝几毛钱的事情,但实现自动登录获取Cookies这个我没有研究过,但跟今天我要说的没什么关系。

今天我要说的是在Scrapy中使用代理来访问微博进而进行爬取。

首先我们得找到一些免费可用的代理服务器。网上有很多Python自动获取代理的方法,我这里只做简单的实验,所以就直接在程序中写死。

http://www.xdaili.cn/freeproxy.html

这个网站很不错,推荐的那几个免费的基本都能用。我这里使用他的无密码代理。

下面进入正文。

Settings.py的配置

想要使用代理,我们必须打开Downloader的Middleware。

设置如下:

DOWNLOADER_MIDDLEWARES = {
    'Spider.middlewares.Proxy_And_UsrAgent': ,
}
           

由于只是使用代理,这使得我们的代码变得异常简单。

from Spider.settings import USER_AGENT
Proxy = [
    '180.122.155.55:31104',#这个自己更换
]
class Proxy_And_UsrAgent(object):
    # Not all methods need to be defined. If a method is not defined,
    # scrapy acts as if the spider middleware does not modify the
    # passed objects.
    def process_request(self,request,spider):
        request.headers.setdefault('User-Agent',random.choice(USER_AGENT))
        request.meta['proxy'] = 'http://' + random.choice(Proxy)

           

USER_AGENT这个相信大家都不陌生,这个写在settings.py里面,充当User_Agent列表。

每次访问,我们随机的选择一个USER_AGENT,随机的选择一个代理(这个不太好,应该每个账户固定一个代理&一个Header,多账户同时爬取)

process_request(),每次提交一次request,request便会传入process_request这里,我们就是在这里实现添加代理&User_Agent的操作的。

的确很简单。