基于python的一个大规模爬虫遇到的一些问题总结

本文总结了使用Python进行大规模论坛爬取过程中遇到的问题,包括如何从起始页获取分区版面网址,计算分区页码,抓取文章链接并保存为本地TXT文件。
摘要由CSDN通过智能技术生成

前些天在某个论坛看到一些很感兴趣的信息,想要将其爬取下来,预估了下规模,想要做的是:将整个论坛的所有文章爬取下来,保存为本地的txt。

一开始写了个爬虫,大致思路是:

  1. 先从论坛的起始页开始爬起,得到所有分区版面的网址
  2. 然后从分区版面得到该区总共的页码数,根据网址规律得到分区版面所有页数的网页
  3. 从上面的分区版面的某一页的网页中得到该页所有文章的网址,然后抓取这些文章,保存为本地txt
上面的思路是典型的自上而下的思路,这样第一版本的代码就写好了。

下面进入正题,总结一下遇到的问题:

一、大规模爬虫被网站封禁的问题
上面的爬虫在调试阶段表现还是不错的,后来实测中,跑起来发现,跑了一段时间后就会发生http错误,由于使用的是有线网,且检查后不是网络本身的错误,所以判定为本网站封禁了,于是开始研究这个问题。
一般来说,python爬虫将自己伪装为浏览器时,使用的方法是在urllib2.Request函数中加入headers参数,也即类似于
 "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
的user_agent代码片段,但是这样在大规模爬取中,就会被网站判定为一个用于长期快速访问,容易被封禁。本来在开始的代码中,爬虫访问两个网页之间是加入了0.5s的时间延时,就是为了防止这一问题的,结果还是不可以,而如果将延时加大,将会影响到爬虫的效率,而且如此大规模的爬取更是不知要何时才能结束。
于是,考虑伪装成多个浏览器的访问的方法来解决这一问题,具体做的就是,找许多user_agent,保存为一个列表,而在访问网页时,轮流使用以上user_agent,这样就伪装成了许多浏览器。附上具体子函数如下:
user_agent_list = [
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
        "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",
        "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",
        "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",

        "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",
        "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
        "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",

        "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
        "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safa
  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值