基础操作一
import urllib
import chardet #字符集检测
url = "http://www.163.com/"
html = urllib.urlopen(url)
print html.headers #头部信息
print html.getcode() #状态码,如果是200则是正常状态
print html.read() #读取内容
print html.read().decode("gbk").encode("utf-8") 编码和解码
print html.geturl() #获取网页地址
info=html.info() #头部信息
print dir(info) #网页是一个,放回对象属性key,这个很重要
info.getparam('charset') #内容字体
基础操作二
条件判断语句,自动化处理抓取结果
code = html.getcode()
print type(code) #状态吗类型
if code==200:
print "网页正常"
print html.info() #网页头部信息
else:
print "网页出现问题"
基础操作三
import urllib
#urlretrieve()方法,显示进度条
"""
1,传入网址,网址的类型一定是字符串
2.转入的,本地网址保存路径+文件名
3.一个函数的调用,我们可以任意来定义这个函数的行为,但是一定要保证这个函数有3个参数。
(1).到目前为此传递的数据块数量。
(2)每个数据块的大小,单位的byte,字节
(3)远程文件的大小。(有时候放回为-1)
"""
def callback(a , b, c):
"""
:param a:到目前为此传递的数据块数量
:param b:每个数据块的大小,单位的byte,字节
:param c:远程文件的大小
:return:
"""
down_progress =100.0*a*b/c
if down_progress > 100:
down_progress =100
print "%.2f%%" %down_progress, #逗号是一条显示进度
url = "http://www.iplaypython.com/"
local = "E:\\Other\\pythonDown\\iplaypython.html"
urllib.urlretrieve(url,local,callback)
基础操作四—-字符检测
import urllib
import chardet #字符集检测
def automatic_detect(url):
content=urllib.urlopen(url).read()
result = chardet.detect(content)
encoding = result["encoding"]
return encoding
# url = "http://www.iplaypython.com/"
# url = "http://www.163.com/"
# print automatic_detect(url)
urls=["http://www.163.com/",
"http://www.iplaypython.com/",
"http://www.jd.com/"]
for url in urls:
print url, automatic_detect(url)
基础操作五—-应对爬虫机制
import urllib2
import random
#模拟浏览器的头文件,如果可以加上代理IP。
my_headers = [
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TencentTraveler ; .NET CLR 1.1.4322)",
"User-Agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
"User-Agent:Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
"User-Agent:Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0",
"User-Agent:Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)",
"User-Agent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)",
"User-Agent:Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11",
"User-Agent:Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11"
]
def get_context(url,headers):
"""
:param url:
:param headers:
:return:
"""
random_header = random.choice(headers)
req=urllib2.Request(url)
req.add_header("User-Agent",random_header)
req.add_header("GET",url)
req.add_header
req.add_header("Referer")
context=urllib2.urlopen(req).read()
return context
url
print get_context(url,my_headers)
如果您喜欢我写的博文,读后觉得收获很大,不妨小额赞助我一下,让我有动力继续写出高质量的博文,感谢您的赞赏!微信