Python使用scrapy采集数据时为每个请求随机分配user-agent的方法_python

本文实例讲述了Python使用scrapy采集数据时为每个请求随机分配user-agent的方法。分享给大家供大家参考。具体分析如下:

通过这个方法可以每次请求更换不同的user-agent,防止网站根据user-agent屏蔽scrapy的蜘蛛

首先将下面的代码添加到settings.py文件,替换默认的user-agent处理模块

复制代码 代码如下:

DOWNLOADER_MIDDLEWARES = {
    'scraper.random_user_agent.RandomUserAgentMiddleware': 400,
      'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware': None,
}

自定义useragent处理模块

复制代码 代码如下:

from scraper.settings import USER_AGENT_LIST
import random
from scrapy import log
class RandomUserAgentMiddleware(object):
    def process_request(self, request, spider):
        ua  = random.choice(USER_AGENT_LIST)
        if ua:
            request.headers.setdefault('User-Agent', ua)
        #log.msg('>>>> UA %s'%request.headers)

希望本文所述对大家的Python程序设计有所帮助。

时间: 2024-09-19 03:47:15

Python使用scrapy采集数据时为每个请求随机分配user-agent的方法_python的相关文章

Python使用scrapy采集数据过程中放回下载过大页面的方法_python

本文实例讲述了Python使用scrapy采集数据过程中放回下载过大页面的方法.分享给大家供大家参考.具体分析如下: 添加以下代码到settings.py,myproject为你的项目名称 复制代码 代码如下: DOWNLOADER_HTTPCLIENTFACTORY = 'myproject.downloader.LimitSizeHTTPClientFactory' 自定义限制下载过大页面的模块 复制代码 代码如下: MAX_RESPONSE_SIZE = 1048576 # 1Mb fro

Python基于scrapy采集数据时使用代理服务器的方法_python

本文实例讲述了Python基于scrapy采集数据时使用代理服务器的方法.分享给大家供大家参考.具体如下: # To authenticate the proxy, #you must set the Proxy-Authorization header. #You *cannot* use the form http://user:pass@proxy:port #in request.meta['proxy'] import base64 proxy_ip_port = "123.456.7

Python使用scrapy采集时伪装成HTTP/1.1的方法_python

本文实例讲述了Python使用scrapy采集时伪装成HTTP/1.1的方法.分享给大家供大家参考.具体如下: 添加下面的代码到 settings.py 文件 复制代码 代码如下: DOWNLOADER_HTTPCLIENTFACTORY = 'myproject.downloader.HTTPClientFactory' 保存以下代码到单独的.py文件 复制代码 代码如下: from scrapy.core.downloader.webclient import ScrapyHTTPClien

解决angular的$http.post()提交数据时后台接收不到参数值问题的方法_AngularJS

写此文的背景:在学习使用angular的$http.post()提交数据时,后台接收不到参数值,于是查阅了相关资料,寻找解决办法. 写此文的目的:通过上面提到的文章中的解决之道,结合自己的经验,总结了如下发现. 前端:html,jquery,angular 后端:java,springmvc一.平常使用的post提交和接收方式前端使用jquery提交数据. $.ajax({ url:'/carlt/loginForm', method: 'POST', data:{"name":&qu

python实现去除下载电影和电视剧文件名中的多余字符的方法_python

本文实例讲述了python实现去除下载电影和电视剧文件名中的多余字符的方法,是一个非常实用的技巧,分享给大家供大家参考.具体如下: 有时候我们讨厌下载电影和电视剧文件名中的多余字符(如网址和广告字样),搞得文件名好长!不便于查看,这时候就可以使用下面的Python代码,自行修改即可. 具体实现代码如下: #!\usr\bin\env python # -*- coding: utf-8 -*- # Author: 吴徐平 # FileName: RefineFileName.py # Funct

Python实现将n个点均匀地分布在球面上的方法_python

本文实例讲述了Python实现将n个点均匀地分布在球面上的方法.分享给大家供大家参考.具体分析如下: 最近工作上遇到一个需求,将10000左右个点均匀地分布在一个球面上.所谓的均匀,即相邻的两个点之间的距离尽量一致. 我的算法是用基于正多面体剖分球面,我选的是正八面体. 1. 效果图如下: 2.sphere.py代码如下 #!/usr/bin/python # -*- coding: utf-8 -*- import math class Spherical(object): '''球坐标系''

python让图片按照exif信息里的创建时间进行排序的方法_python

本文实例讲述了python让图片按照exif信息里的创建时间进行排序的方法.分享给大家供大家参考.具体分析如下: 我们经常会从不同的设备里取出照片,比如照相机,手机,iphone等等,操作系统记录的创建日期经常 会因为拷贝等原因变动,下面的代码可以给图片按照exif里的创建时间进行排序,非常有用. 复制代码 代码如下: import os import shutil import Image from PIL.ExifTags import TAGS def print_all_known_ex

python实现简单socket程序在两台电脑之间传输消息的方法_python

本文实例讲述了python实现简单socket程序在两台电脑之间传输消息的方法.分享给大家供大家参考.具体分析如下: python开发简单socket程序在两台电脑之间传输消息,分为客户端和服务端,分别在两台电脑上运行后即可进行简单的消息传输,也可以在一台电脑上测试,设置两个不同的端口即可. # Save as server.py 服务端代码 # Message Receiver import os from socket import * host = "" port = 13000

python获取Linux下文件版本信息、公司名和产品名的方法_python

本文实例讲述了python获取Linux下文件版本信息.公司名和产品名的方法,分享给大家供大家参考.具体如下: 区别于前文所述.本例是在linux下得到文件版本信息,主要是通过pefile模块解析文件 中的字符串得到的.代码如下: def _get_company_and_product(self, file_path): """ Read all properties of the given file return them as a dictionary. @retur