您的位置:首页 > 编程语言 > Python开发

【Python】爬虫小结

2015-10-21 16:48 691 查看

1.获取页面源代码

1.1获取http类型的页面源代码

import time,os,cookielib,urllib2,urllib
import datetime,StringIO,gzip

def getHtml(url,referurl=None,cookie=None,postdata=None,ip=None):
cookie_support= urllib2.HTTPCookieProcessor(cookielib.CookieJar())#伪装cookies
if ip:
proxy_support = urllib2.ProxyHandler({'http':ip})#代理
opener = urllib2.build_opener(proxy_support, cookie_support, urllib2.HTTPHandler)
urllib2.install_opener(opener)
else:
opener = urllib2.build_opener( cookie_support, urllib2.HTTPHandler)
urllib2.install_opener(opener)
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0'}#伪装浏览器
req = urllib2.Request(url,headers = headers)
if referurl:
req.add_header('referer',referurl)
if cookie:
req.add_header('Cookie', cookie)
if postdata:
try:
req.add_data(urllib.urlencode(postdata))
except:
req.add_data(postdata)
content=urllib2.urlopen(req,timeout=120).read()
try:
gzp_content = StringIO.StringIO(content)
gzipper = gzip.GzipFile(fileobj =gzp_content)
content =gzipper.read()
except:
1
return content


1.2获取https类型的页面源代码

import pycurl,StringIO

def getHtml(url):
c=pycurl.Curl()
c.setopt(c.URL, url)
b = StringIO.StringIO()
c.setopt(c.WRITEFUNCTION, b.write)
c.setopt(c.COOKIEFILE, '')
c.setopt(pycurl.USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)")
c.setopt(c.HTTPHEADER, ['Accept: text/html', 'Accept-Charset: UTF-8'])
c.setopt(c.SSL_VERIFYPEER, 0)
c.setopt(c.SSL_VERIFYHOST, 0)
c.setopt(c.FOLLOWLOCATION, 1)
c.setopt(c.HEADER,False)
c.perform()
html=b.getvalue()
b.close()
c.close()
return html


2.抓取带JS的页面信息(下拉加载,点击加载等)

2.1用firebug中的XHR分析出所需内容真正的url,再用该url请求需要的内容

2.2对应的url有的很长,可以试着不断裁短,只要内容不变就好

3.截取需要的内容

3.1若返回的是json格式的内容,可以用json.loads(html)将内容转成字典来操作并截取内容

3.2若返回的内容是html格式的内容,可以用beautifulsoup, lxml.etree,re来截取内容

4.应对IP被封的方法

4.1 使用UA伪装成浏览器进行访问

4.2 延长每次爬取的时间间隔

4.3 使用代理IP进行爬取

5.常用的编码与解码方法

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: