Python很强大,熟练的程序员可以在5分钟内写出一个有价值的爬虫,比如抓取旅游信息、抓取工商信息、抓取商品信息等都是有价值的数据网站。但像这样的有价值的网站是不会任由你无限爬取的,有爬取就有反抗。这是一场网站和程序员之间的一种博弈,最后能获取到多少的数据全凭你的技术能力。今天就重点来聊下这个网站之间的博弈,彼此之间的招数就是你抓他就防,你改进抓取方法,他就提高防抓手段,总之不会让人随便你抓爬取。
从爬虫技术角度讲,只要你能通过网页上看到的内容,就一定能抓!无非就是抓取难度的大小。接下来小编总结了爬虫的几个难点以及如何解决的思路。
1、如何判定网站是否能抓取,一般的能抓取的网站都会有robots.txt,这个是网站写给爬虫的声明,里面写明了那些内容不能抓取,robots.txt一般放在网站的根目录下。
2、复杂多变的网页结构,通常会有这2种表现方式。1.同一个网页在显示不同的内容时会有不同的结构。
比如商品详情页,不同的商品,使用不同的网页模板,这是很正常的情况。2.网页功能或者设计风格的改变。一般的爬虫都是根据网页结构,使用xpath去解析内容,一旦结构变了,就解析不出来了。
3、IP封锁,iP封锁是常用的反抓取手段。当网站发现某个IP地址发送请求过多的时候,会临时或者永久的封锁这个IP的请求。一般情况下直接上代理就可以,最好是选择付费代理,质量,稳定性更有保障,如果不知道如何去选择,可以直接使用这家http://www.16yun.cn/help/,联系客户先测试后购买。代理的添加方式如下所示:
#! -*- 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
4.、图片验证码,图片验证码是另一种最常用的反爬技术,现在出
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构