Python 学习随笔以及爬虫基本入门,设置随机UA等

1 篇文章 0 订阅
1 篇文章 0 订阅

正则

1. ^ 表示起始点
2. $ 表示结尾
3. {} 表示内容重复几次,用逗号隔开.?取非贪婪.
4. ^ 取非
5. () 表示一组

正则方法

1. re.findall()
2. re.sub()

实用样例

 # 匹配每条段子里无用字符部分,并替换为空:
 # \s 表示空白符,如果空格、换行符等
 # &.*?; 表示 HTML实体字符,如   等
 # <.*?> 表示 标签,如 <p> 、 <\br> 等
 #   或者 u"\u3000".encode("utf-8") 表示 中文全角空格
     #self.pattern_content = re.compile(r"\s|&.*?;|<.*?>| ")
      self.pattern_content = re.compile(r"\s|&.*?;|<.*?>|" + u"\u3000".encode("utf-8"))

Mac修改默认Python版本

1.安装Python 3

2.查看Python3 安装路径

  打开终端,输入which python3,查看路径 /Library/Frameworks/Python.framework/Versions/3.7/bin/python3

3.打开配置文件

   open ~/.bash_profile

4.写入外部环境变量

   export PATH=${PATH}:/Library/Frameworks/Python.framework/Versions/3.7/bin/python3

5.重命名Python

   alias python="/Library/Frameworks/Python.framework/Versions/3.7/bin/python3"

6.关闭文件

7.终端执行命令:source ~/.bash_profile

8.终端执行命令: python检查Python版本

4. 谷歌插件安装位置

 sudo mv chromedriver /usr/local/bin

5. scrapy 创建Python爬虫项目

scrapy startproject movies

6. Python3 scrapy 通过fake_useragent生成随机UserAgent

Python3中通过fake_useragent生成随机UserAgent
fanhuasijin
fanhuasijin
2020-03-26

关注关注
一、安装和使用
fake_useragent第三方库,来实现随机请求头的设置;

GitHub               ---> https://github.com/hellysmile/fake-useragent

安装                    ---> pip3 install fake-useragent

查看useragent   ---> http://fake-useragent.herokuapp.com/browsers/0.1.5

关键是后面的版本号,如果更新后使用原版本号就查看不到useragent;

如何操作最新版本号?通过pip3 list 查看安装的版本号;

 使用

from fake_useragent import UserAgent

ua = UserAgent()
print(ua.ie)   #随机打印ie浏览器任意版本
print(ua.firefox) #随机打印firefox浏览器任意版本
print(ua.chrome)  #随机打印chrome浏览器任意版本
print(ua.random)  #随机打印任意厂家的浏览器
二、应用于scrapy爬虫项目
  首先在middlewares.py中自定义随机请求头的类

  根据scrapy源码中: scrapy目录--->downloadermiddlewares--->useragent.py 中的 UserAgentMiddleware类来写middlewares.py随机请求头的类

  源码中useragent.py

"""Set User-Agent header per spider or use a default value from settings"""

from scrapy import signals


class UserAgentMiddleware(object):
    """This middleware allows spiders to override the user_agent"""

    def __init__(self, user_agent=‘Scrapy‘):
        self.user_agent = user_agent

    @classmethod
    def from_crawler(cls, crawler):
        o = cls(crawler.settings[‘USER_AGENT‘])
        crawler.signals.connect(o.spider_opened, signal=signals.spider_opened)
        return o

    def spider_opened(self, spider):
        self.user_agent = getattr(spider, ‘user_agent‘, self.user_agent)

    def process_request(self, request, spider):
        if self.user_agent:
            request.headers.setdefault(b‘User-Agent‘, self.user_agent)
middlewares.py定义随机请求头的类

class RandomUserAgentMiddlware(object):
    ‘‘‘随机更换user-agent,基本上都是固定格式和scrapy源码中useragetn.py中UserAgentMiddleware类中一致‘‘‘
    def __init__(self,crawler):
        super(RandomUserAgentMiddlware,self).__init__()
        self.ua      = UserAgent()        #从配置文件settings中读取RANDOM_UA_TYPE值,默认为random,可以在settings中自定义
        self.ua_type = crawler.settings.get("RANDOM_UA_TYPE","random") 

    @classmethod
    def from_crawler(cls,crawler):
        return cls(crawler)

    def process_request(self,request,spider):#必须和内置的一致,这里必须这样写
                def get_ua():
            return getattr(self.ua,self.ua_type)
        request.headers.setdefault(‘User-Agent‘,get_ua())
settings里面的配置

DOWNLOADER_MIDDLEWARES = {
   ‘ArticleSpider.middlewares.RandomUserAgentMiddlware‘: 543,           #将在middlewares.py中定义了RandomUserAgentMiddlware类添加到这里;
   ‘scrapy.downloadermiddlewares.useragent.UserAgentMiddleware‘:None,   #需要将scrapy默认的置为None不调用
}

RANDOM_UA_TYPE = "random"   #或者指定浏览器 firefox、chrome...
PS:配置好后取消原来spider中定义的User-Agent。再次进行爬虫时,会自动携带随机生成的User-Agent,不需要在每个spider中自定义了;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Army_Ma

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值