新大榭论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

《新大榭》- 创大榭地方网络社区先锋品牌 新大榭始终专注于地方网络社区平台的建设 关于我们- [大记事]- 留言建议- [新手报道]

发布 .新大榭软件管家(Excel版) V6.0版 财务/仓库/生产/销售/采购/行政/人事/校园 .公告 - 客户 - 打赏 - 职场 - Excel - Python.

新大榭镜像-搜音乐-法律库-图书馆-高中课堂-实验室 广告是为了能更好的发展 [欢迎商家支持本站互利共赢] 广告位招租.首页黄金广告位等您来!联系 13566035181

查看: 935|回复: 0

[行业资讯] 抓取微博数据,如何防护爬虫被墙

[复制链接]
发表于 2021-11-14 11:22:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!

您需要 登录 才可以下载或查看,没有账号?注册

x
大数据时代下,数据采集推动着数据分析,数据分析推动发展。但是在这个过程中会出现很多问题。拿最简单最基础的爬虫采集数据为例,过程中就会面临,IP被封,爬取受限、违法操作等多种问题,所以在爬去数据之前,一定要了解好预爬网站是否涉及违法操作,找到合适的代理IP访问网站等一系列问题。
5 C9 D5 C  [% h( A下面分享一些爬取微博数据时,防太阳HTTP止爬虫被墙的几个技巧,希望对您有所帮助。: t5 t  d) W: p

1 l) R& v* S4 x8 J技巧一:分布式爬取
$ v6 P7 s9 a# D分布式爬取的也有很多Githubrepo。原理主要是维护一个所有集群机器能够有效分享的分布式队列。?" o% @# O$ n: c
使用分布式爬取还有另外一个目的:大规模抓取,单台机器的负荷很大,况且速度很慢,多台机器可以设置一个master管理多台slave去同时爬取。?
* C6 Z+ b/ ~0 D5 Y4 S! [另外关于网页判重问题,可以用Bloom Filter。
( e" i9 t/ F# W, ]5 J; g7 m3 U& L1 K

/ x( o$ [2 h% \9 x技巧二:设置cookies
; n% u. A7 E0 X( U1 k0 |4 G$ lcookie其实是储存在用户终端的一些被加密的数据,有些网站通过cookies来识别用户身份,如果某个访问总是高频率地发请求,很可能会被网站注意到,被嫌疑为爬虫,这时网站就可以通过cookie找到这个访问的用户而拒绝其访问。?
! I6 f% D( X; C$ d( b+ N可以自定义设置cookie策略(防止cookie rejected问题:拒绝写入cookie)或者禁止cookies。?
. i. h/ Z9 `( z+ _(1) 自定义设置cookies策略(防止cookierejected问题,拒绝写入cookie)?% ^8 Y9 b- w9 t. R9 d
在系列一那篇文章里就有自定义cookie策略设置,但更多的借鉴是官方文档的例子,设置方法其实都大同小异,因为HttpClient-4.3.1组件版本跟以前旧版本的不同,写法也有不同,另见官方文档:?
7 c: M/ `! V8 K# J; k( h# y(2) 禁止cookies?$ O1 Y8 q7 v$ g& N' V7 S
通过禁止cookie,这是客户端主动阻止服务器写入。禁止cookie可以防止可能使用cookies识别爬虫的网站来ban掉我们。?
' p  d) d- Q3 o在scrapy爬虫中可以设置COOKIES_ENABLES= FALSE,即不启用cookies middleware,不向web server发送cookies。! t' ]# q: w7 v
3 w7 L* q! ?) A' ]  d
9 B- E% q* a6 U
技巧三:修改IP, d; b$ w6 K, t4 u& ^
其实微博识别的是IP,不是账号。也就是说,当需要连续抓取很多数据的时候,模拟登录没有意义。只要是同一个IP,不管怎么换账号也没有用,主要的是换IP。?
4 Z/ N# E3 S2 i# aweb server应对爬虫的策略之一就是直接将IP或者整个IP段都封掉禁止访问,当IP被禁封后,转换到其他IP继续访问即可。方法:代理IP、本地IP数据库(使用IP池)。?9 G4 h! x) U1 q8 L0 `4 J4 h
(1) 从代理IP网站获取大量IP?, l6 r' q, c' C. E: W' v+ f" E+ C
如果总是请求代理IP站点也未免有些麻烦,况且某些代理IP站点有时还可能被禁封,当然再换一个代理IP站点也可以,如果你不嫌麻烦的话。?$ B( D( k' D1 p5 D: q
(2) 使用IP地址库?  @3 {3 w" ~% e! j8 j$ m0 R
网上也有很多现成可用的IP地址库,可以存放到本地,如果本地有IP数据库就方便很多,至少不用每次都去请求代理IP站点了(当然可以一次性把站点内所有代理IP先爬下来存储好,形成本地IP数据库),总之获取IP的方法有很多,不一定非要是通过代理IP站点。
' G( P/ G4 x+ G" s4 F8 A道理相同,把IP解析出来就可以用了。
% t* e* V2 Y) A. U7 B
2 b; x3 k9 r, c6 O5 Q1 @4 f3 A1 S, T* u) t. |5 n+ z
技巧四:修改User-Agent
" i% x* n) f0 l最常见的就是伪装浏览器,修改User-Agent(用户代理)。?, k& P2 ^. U+ G9 B
User-Agent是指包含浏览器信息、操作系统信息等的一个字符串,也称之为一种特殊的网络协议。服务器通过它判断当前访问对象是浏览器、邮件客户端还是网络爬虫。在request.headers里可以查看user-agent,关于怎么分析数据包、查看其User-Agent等信息,这个在前面的文章里提到过。?
& P7 ^; n+ b' B. t% ]; u7 C+ G3 X具体方法可以把User-Agent的值改为浏览器的方式,甚至可以设置一个User-Agent池(list,数组,字典都可以),存放多个“浏览器”,每次爬取的时候随机取一个来设置request的User-Agent,这样User-Agent会一直在变化,防止被墙。% f& v. N+ B9 N
6 a4 L  X% J8 N- ^' V- G' c

. U1 D3 M+ L9 @0 D, |% ]技巧五:设置下载等待时间/下载频率
# _$ m" N; T, p7 a+ O8 x. ~4 ^大规模集中访问对服务器的影响较大,爬虫可以短时间增大服务器负载。这里需要注意的是:设定下载等待时间的范围控制,等待时间过长,不能满足短时间大规模抓取的要求,等待时间过短则很有可能被拒绝访问。?
' t: X6 p) Q1 u! c(1) 在之前“从url获取HTML”的方法里,对于httpGet的配置设置了socket超时和连接connect超时,其实这里的时长不是绝对的,主要取决于目标网站对爬虫的控制。?
+ P' s2 s, @) T6 p7 U(2) 另外,在scrapy爬虫框架里,专有参数可以设置下载等待时间download_delay,这个参数可以设置在setting.py里,也可以设置在spider里。
: A. X0 k) v" J4 k+ e& M/ g( ?/ R$ S
) o7 [8 M5 o& p: o
6 U  h1 A) V- u% c" w3 [0 t太阳HTTP海量IP,高效快速,给您更好的爬虫操作体验!
新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
Q群推荐 大榭本地求职招聘QQ群,欢迎转发分享本地招聘信息资讯! 官方招聘1群(已满);官方招聘2群:315816937 *
您需要登录后才可以回帖 登录 | 注册

本版积分规则

文字版|小黑屋|新大榭 ( 浙ICP备16018253号-1 )|点击这里给站长发消息|

GMT+8, 2026-11-11 19:22 , Processed in 0.069739 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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