Python爬虫需要注意的技巧

网络爬虫的要求有几点


一.  一个好的网页解释器,python推荐BeautifulSoup,java推荐htmlparser。


二. 良好的性能,不能太慢,当遇上网络状况不大好的时候,慢更受不了,所以通常需要同时启动N个网络爬虫进行工作.使用队列可以很好解决这个问题。优化性能常见解决方案------队列辅助多线程。


三. 稳定性,容错性。网络本来就存在不稳定性,连接超时,连接重置等是常见的不稳定现象,网络爬虫程序要充分妥当地处理这些问题,保证爬虫输出结果的完整性。


技巧

一. 基本的抓取
import urllib2
content=urllib2.urlopen("http://baidu.com").read()
二. 使用代理服务器

一般,抓去大量数据时,最好使用代理。防止IP被封,下载次数受限等。

import urllib2 

proxy_support=urllib2.ProxyHandler({'http':'http://XX.XX.XX.XX:XXXX'})
opener=urllib2.build_opener(proxy_support,urllib2.HTTPHandler)
urllib2.install_opener(opener) 
content=urllib2.urlopen('http://XXXX').read()
三. 需要登录时
1. 使用cookie
import urllib2,cookielib 

cookie_support=urllib2.HTTPCookieProcessor(cookielib.CookieJar())
opener=urllib2.build_opener(cookie_support,urllib2.HTTPHandler)
urllib2.install_opener(opener) 
content=urllib2.urlopen('http://XXXX').read()

 若想同时使用cookie和代理,则opener换成

opener=urllib2.build_opener(proxy_support,cookie_support,urllib2.HTTPHandler)
2. 处理表单

一般通过post方式提交数据,可以利用F12开发者工具分析提交的数据包,然后构建相应的post数据发送http请求

3. 伪装成浏览器

某些网站反感爬虫,拒绝请求。可以通过修改http包的header来伪装

headers={
‘User-Angent’: 'Mozilla/5.0(Windows;U;WindowsNT6.1;en-US;rv:1.9.1.6)Gecko/20091201Firefox/3.5.6'
}
req=urllib2.Request(
    url="http://...",
    data=postData,
    headers=headers
)
4. 反盗链

header里面,referer站点是不是他自己,所以我们只需要把headers的referer改成该网站即可。

参考文档:http://blog.csdn.net/nn179/article/details/7770768

                http://wenku.baidu.com/link?

你可能感兴趣的:(python,爬虫技巧)