看流星社区

 找回密码
 注册账号
查看: 2745|回复: 0

[分享] 深入浅出爬虫要点

[复制链接]

该用户从未签到

发表于 2020-5-19 17:37:54 | 显示全部楼层 |阅读模式
网络爬虫又被称为网页蜘蛛、网络机器人或网页追逐者,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成部分。
爬虫的工作原理:
(1)选取一部分精心挑选的种子 URL。
(2)将这些 URL 放入待抓取 URL 队列。
(3)从待抓取 URL 队列中取出待抓取的 URL,解析 DNS 并且得到主机的 IP,将 URL 对应的网页下载下来,存储进已下载的网页库中。此外,将这些 URL 放进已抓取的 URL 队列。
(4)分析已抓取的 URL 队列中的 URL,然后解析其他 URL,并且将 URL 放入待抓取的 URL 队列,从而进入下一个循环。

[img][/img]
有了网络爬虫,当然网站也会做反爬虫机制,那什么是爬虫和反爬虫呢?一张图说明一切:
[img][/img]
如何解决反爬虫:
1、
通过User-Agent来控制访问:
无论是浏览器还是爬虫程序,在向服务器发起网络请求的时候,都会发过去一个头文件:headers,比如知乎的requests headers
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.1276.73 Safari/537.36', 'Referer':'https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=nike'}
response = requests.get(url=url, headers=headers)
有些网站会检查你是不是真的浏览器访问,还是机器自动访问的。这种情况,加上User-Agent,表明你是浏览器访问即可。有时还会检查是否带Referer信息还会检查你的Referer是否合法,一般再加上Referer。
User-Agent可以用亿牛云提供给的真实库,Referer的来源可以伪装成百度搜索来的。
2、
使用代理
适用情况:大部分网站均限制了IP的访问量
对于“频繁点击”的情况,我们还可以通过限制爬虫访问网站的频率来避免被网站禁掉。
解决方法:
使用爬虫IP代理池,就是通过ip代理,从不同的ip进行访问,这样就不会被封掉ip了。
可是ip代理的获取本身就是一个很麻烦的事情,网上有免费和付费的,但是质量都层次不齐。如果是企业里需要的话,可以通过在网上购买付费代理。
这是我使用的简单代理转换,代码如下:
        
#! -- encoding:utf-8 --
    import requests
    import random
    # 要访问的目标页面
    targetUrl = "http://httpbin.org/ip"
    # 要访问的目标HTTPS页面
    # targetUrl = "https://httpbin.org/ip"
    # 代理服务器(产品官网 www.16yun.cn)
    proxyHost = "t.16yun.cn"
    proxyPort = "31111"
    # 代理隧道验证信息
    proxyUser = "username"
    proxyPass = "password"
    proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
        "host" : proxyHost,
        "port" : proxyPort,
        "user" : proxyUser,
        "pass" : proxyPass,
    }
    # 设置 http和https访问都是用HTTP代理
    proxies = {
        "http"  : proxyMeta,
        "https" : proxyMeta,
    }
    #  设置IP切换头
    tunnel = random.randint(1,10000)
    headers = {"Proxy-Tunnel": str(tunnel)}
    resp = requests.get(targetUrl, proxies=proxies, headers=headers)
    print resp.status_code
    print resp.text
3、
网络爬虫需要注意的问题:
• 如何处理js生成的cookie
可以使用无头浏览器获取大量cookie,存储后备用。
• 如何控制频率和利用代理破除反爬限制
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-4-24 13:52

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表