• python爬虫学习(一)


    #简单例子:抓取网页全部内容后,根据正则表达式,获取符合条件的字符串列表
    from urllib import request
    #正则表达式
    import re

    url = "http://www.baidu.com/"

    #读取并解码,针对中文 编码是encode()
    response = request.urlopen(url).read().decode()

    print(response)

    print(len(response))

    print(type(response))
    #正则表达式
    pattern = r"<title>.*?</title>"

    data = re.findall(pattern, response)

    print(data)
    #是个list列表类型
    print(type(data))







    #简单例子2:部分网站会根据根据请求头的user-agent判断用户访问用的什么浏览器,如果没有此信息则判定为爬虫,然后请求会被屏蔽。此例子是自定义请求头的user-agent 模拟浏览器发送请求后抓取数据 根据正则获取符合条件的字符串列表

    from urllib import request
    import re

    url = r"http://www.baidu.com/"
    #由于有些网站有反爬虫策略,就是判断请求的user-agent来判断是什么浏览器打开的。
    #所以可以自定义请求 伪装浏览器来爬数据

    #搜狗浏览器的
    header1 = {"user-agent":
    "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0"}
    #水果手机的safari
    header = {"user-agent":
    "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5"}

    #自定义请求头
    req = request.Request(url,headers=header)

    response = request.urlopen(req).read().decode()

    #正则表达式
    pattern = r"<title>.*?</title>"
    data = re.findall(pattern, response)
    print(data)


    #简单例子3: 模拟出多个浏览器,随机去访问抓取数据然后根据正则获取字符串列表
    from urllib import request
    import re
    import random

    url = r"http://www.baidu.com/"
    #由于同一个浏览器短时间内多次短时间的请求可能会被限制。此时可以用多个agent伪装多个浏览器进行访问爬取

    #搜狗浏览器的
    agent1 = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0"
    #水果手机的safari
    agent2 = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5"
    #黑莓手机
    agent3 = "Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.337 Mobile Safari/534.1+"
    #安卓QQ浏览器
    agent4 = "MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"
    #NOKIA N97
    agent5 = "Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/20.0.019; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.18124"

    list = [agent1, agent2, agent3, agent4, agent5]

    #随机数从list选一条
    agent = random.choice(list)

    header = {"user-agent": agent}
    #自定义请求头
    req = request.Request(url,headers=header)

    response = request.urlopen(req).read().decode()

    #正则表达式
    pattern = r"<title>.*?</title>"

    data = re.findall(pattern, response)

    print(data)
  • 相关阅读:
    Hanoi塔
    采药
    进制转换(大数)
    Load Balancing with NGINX 负载均衡算法
    upstream模块实现反向代理的功能
    epoll
    在nginx启动后,如果我们要操作nginx,要怎么做呢 别增加无谓的上下文切换 异步非阻塞的方式来处理请求 worker的个数为cpu的核数 红黑树
    粘性会话 session affinity sticky session requests from the same client to be passed to the same server in a group of servers
    负载均衡 4层协议 7层协议
    A Secure Cookie Protocol 安全cookie协议 配置服务器Cookie
  • 原文地址:https://www.cnblogs.com/fuguang/p/10605361.html
Copyright © 2020-2023  润新知