python简单爬虫学习
2016-05-02 20:50
513 查看
获取整个页面的信息:
要搞到页面的jpg,这个怎么玩呢?用正则:
但是这样做后出现403错误了:
解决方法:参考Python 3.x 中”HTTP Error 403: Forbidden”问题的解决方案
原因是如果用 urllib.request.urlopen 方式打开一个URL,服务器端只会收到一个单纯的对于该页面访问的请求,但是服务器并不知道发送这个请求使用的浏览器,操作系统,硬件平台等信息,而缺失这些信息的请求往往都是非正常的访问,例如爬虫.
有些网站为了防止这种非正常的访问,会验证请求信息中的UserAgent(它的信息包括硬件平台、系统软件、应用软件和用户个人偏好),如果UserAgent存在异常或者是不存在,那么这次请求将会被拒绝(如上错误信息所示)
所以可以尝试在请求中加入UserAgent的信息:
headers = {‘User-Agent’:’Mozilla/5.0 (Windows NT 6.1; WOW64; >rv:23.0) Gecko/20100101 Firefox/23.0’}
req = urllib.request.Request(url=myUrl, headers=headers)
data = urllib.request.urlopen(req).read()
抓到的图片
#coding = utf-8 import urllib.request def getHtml(url): page = urllib.request.urlopen(url) html = page.read() return page html = getHtml("http://www.baidu.com") print (html)
要搞到页面的jpg,这个怎么玩呢?用正则:
#coding = utf-8 import urllib.request import re def getHtml(url): page = urllib.request.urlopen(url) html = page.read() return page def getImg(html): #正则筛选.jpg,html本质就是一串码流(字符串) reg = r'src = "(.+?\.jpg)" pic_ext' imgRe = re.compile(reg) imgList = re.findall(imgRe,html) name = 0 for i in imgList: urllib.request.urlretrieve(i,'%s.jpg' %name) name += 1 html = getHtml("http://write.blog.csdn.net/mdeditor") print (getImg(html))
但是这样做后出现403错误了:
解决方法:参考Python 3.x 中”HTTP Error 403: Forbidden”问题的解决方案
原因是如果用 urllib.request.urlopen 方式打开一个URL,服务器端只会收到一个单纯的对于该页面访问的请求,但是服务器并不知道发送这个请求使用的浏览器,操作系统,硬件平台等信息,而缺失这些信息的请求往往都是非正常的访问,例如爬虫.
有些网站为了防止这种非正常的访问,会验证请求信息中的UserAgent(它的信息包括硬件平台、系统软件、应用软件和用户个人偏好),如果UserAgent存在异常或者是不存在,那么这次请求将会被拒绝(如上错误信息所示)
所以可以尝试在请求中加入UserAgent的信息:
headers = {‘User-Agent’:’Mozilla/5.0 (Windows NT 6.1; WOW64; >rv:23.0) Gecko/20100101 Firefox/23.0’}
req = urllib.request.Request(url=myUrl, headers=headers)
data = urllib.request.urlopen(req).read()
#coding = utf-8 import urllib.request import re def getHtml(myUrl): headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'} req = urllib.request.Request(url=myUrl, headers=headers) data = urllib.request.urlopen(req).read() #要把网页的编码格式搞成utf-8的,因为python3.x的read()函数返回的事bytes对象,不是string,要转换成string对象 data = data.decode('utf-8') return data def getImg(html): #正则筛选.jpg,html本质就是一串码流(字符串) reg = r'src="(.+?\.jpg)" pic_ext' #构建正则对象 imgRe = re.compile(reg) imgList = re.findall(imgRe,html) name = 0 for i in imgList: urllib.request.urlretrieve(i,'%s.jpg' %name) name += 1 print ("%s.jpg" %name) html = getHtml("http://tieba.baidu.com/p/2460150866") print (getImg(html))
抓到的图片
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- 爬虫笔记
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- Python challenge