爬虫中如何科学上网

为什么爬虫也要科学上网

因为有时候我们还想spider一下外面的世界,油管小鸟谷歌什么的,这时候肯定要出去啦。

构成

简单的科学上网爬虫,我们一般会做这么几件事情。第一是set-up,然后是Request请求(headers来spoof browser),然后是打开页面读取内容,最后是分析并且获取内容。

详细操作

  1. Set-up
  • opener。其中opener包含了proxy作为其中一个handler。对于ProxyHandler,其中包含的proxy必须为一对一对的。

    proxyhandler = urllib2.ProxyHandler(‘http’: ‘proxy地址’,’https’: ‘proxy地址’)

    上面的proxy地址,一般为一个类似于blah.blah.com:8080这样的字符串,包含了地址和端口。

  • 如果需要urllib2.urlopen全部都使用该opener的话,安装这个opener。否则不用安装,在需要使用该opener的时候调用该opener即可。
  1. urllib2.Request是一个URL Request的abstraction,包含了url,headers等参数。urllib2.Request(url, data, headers, originreqhost, unverifiable)
    • headers:因为有很多网站以及proxy对爬虫不太友好;。我们通常需要用headers来伪装成一个浏览器。另外referer有时候也有需要。

      headerinfo =
      ‘User-Agent’:’Mozilla/5.0 (Macintosh; Intel Mac OS X 10105) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36′,
      ‘Proxy-Connection’: ‘keep-alive’,
      ‘Connection’:’keep-alive’

      req = urllib2.Request(url, headers = headerinfo)

  2. 打开页面读取内容这一步没有什么特别的。无非就是

    response = urllib2.urlopen(req)

    content = response.read()

  3. 分析并且获取内容这里涉及到正则表达式,数据分析,数据保存等等问题,这一块涉及到的问题比proxy这块多得多。以后再学习添加相关内容。

小结

这只是爬虫中的一个trick。不过如果使用proxy的时候,记得看看你的proxy服务有没有对爬虫限制哦。

发表评论

电子邮件地址不会被公开。 必填项已用*标注