第二篇,爬取数据
移除点击此处添加图片说明文字
之前几个礼拜我们稍微小小跑了一下python,调度呀、任务呀用了,那么今天我们要写爬虫脚本,第一篇我们搭建了windows的eclipse开发python环境,现在,让我们稍微了解一下python。
本篇引用较多,建议快速阅读。
移除点击此处添加图片说明文字
移除点击此处添加图片说明文字看一下2.6和2.7的特点
移除点击此处添加图片说明文字
移除基本操作python可以看到,python很灵活,像个灵活的猴子。
移除点击此处添加图片说明文字可见python含头不含尾
重头戏来了
移除点击此处添加图片说明文字
移除元组不可变数组元组不可变数组
但是列表是可变的数组
移除但是列表是可变的数组来看看python的异常处理
移除异常处理
移除点击此处添加图片说明文字
移除点击此处添加图片说明文字
URL是URI的一个子集。它是Uniform Resource Locator的缩写,译为“统一资源定位 符”。
通俗地说,URL是Internet上描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上。
采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。
URL的一般格式为(带方括号[]的为可选项):
protocol :// hostname[:port] / path / [;parameters][?query]#fragment
然后,咱们来写一写爬虫吧、
#coding:utf-8
'''
Created on 2017年7月11日
coding=UTF-8
@author: lishouzhuang
'''
import urllib
import urllib2
def getPage(url):
request = urllib2.Request(url)
response = urllib2.urlopen(request)
return response.read()
url='http://www.ebay.com/sch/TShirts-/15687/i.html?Style=Basic Tee&_dcat=15687&Color=Black'
p=0
while p<5:
print ' =='+str(p+1)+'==start=='
result=getPage(url+'&_pgn='+str(p+1))
# txt='F:\\python\\file\\result.html'
# 在此处取得网站源码
txt='F:\\python\\file\\result'+str(p+1)+'.html'
f = open(txt,"w+")
f.write(result)
print ' =='+str(p+1)+'====end=='
p=p+1
f.close()
print 'success'
趴好了之后是这样的:
移除点击此处添加图片说明文字那如果我们要解析格式的话,得要这个东西:
https://www.crummy.com/software/BeautifulSoup/bs4/download/4.6/
下面说一下在Windows下面如何安装Beautiful Soup:
1.到http://www.crummy.com/software/BeautifulSoup/网站上上下载,最新版本是4.1.3。
2.下载完成之后需要解压缩,假设放到D:/python下。
3.运行cmd,切换到D:/python/beautifulsoup4-4.1.3/目录下(根据自己解压缩后的目录和下载的版本号修改),
cd /d D:/python/beautifulsoup4-4.1.3
4.运行命令:
setup.py build
setup.py install
5.在IDE下from bs4 import BeautifulSoup,没有报错说明安装成功。
但是我们setup.py怎么安装?默认会用记事本打开,那么别着急我们
python setup.py install
但是:
移除点击此处添加图片说明文字肯定是环境变量没有。
移除点击此处添加图片说明文字path添加:
移除点击此处添加图片说明文字然后咱们再去安装吧。
移除点击此处添加图片说明文字又报个错,ImportError: No module named setuptools
于是,咱们下载setuptools
移除点击此处添加图片说明文字装好了,很开心,
移除点击此处添加图片说明文字然后可以安装那个东东了。
移除点击此处添加图片说明文字骄傲的结果:
移除点击此处添加图片说明文字咱们再install一下:
移除点击此处添加图片说明文字这个时候,eclipse问我们要不要导包,同意就行了,直接ok哦
移除编译通过咱们运行:
我稍微分析了一下是因为,没有办法解析,没有使用htmlParse这个解析类。。。好尴尬,
python的模块安装在python下的LIB目录下,或Lib\site-packages目录下,找到模块直接删除就可以了
接下来我想先暂停对这个东西的解析了,因为需求是抓取网站的二级和三级结构,我要所有的html即可。
移除点击此处添加图片说明文字然后接着又报这个错误了。
移除点击此处添加图片说明文字
http://www.wandoujia.com/category/5029
咱们要影音播放下载下面所有的应用页面,然后来解析。
需求就是我们要影音播放下载下面的所有视频、直播、音乐、k歌、铃声、收音机
每页我看了一下大概有42页。
然后我们解析一下url
移除点击此处添加图片说明文字
然后视频是716,看下直播是多少:1006
移除点击此处添加图片说明文字音乐是722
移除点击此处添加图片说明文字k歌是718:
移除点击此处添加图片说明文字铃声是917
移除点击此处添加图片说明文字收音机是837:
移除点击此处添加图片说明文字所以,综上,我们确定一下:
视频:http://www.wandoujia.com/category/5029_716
直播:http://www.wandoujia.com/category/5029_1006
音乐:http://www.wandoujia.com/category/5029_722
k歌:http://www.wandoujia.com/category/5029_718
铃声:http://www.wandoujia.com/category/5029_719
收音机:http://www.wandoujia.com/category/5029_837
好了,接下来,我们继续分析分页,关于分页,我们看
移除点击此处添加图片说明文字每个默认有42个分页,好,那我们不管,我们发现,
http://www.wandoujia.com/category/5029_716/2
就是第二页,那么,第一页是:
http://www.wandoujia.com/category/5029_716
好的,接下来,我们得开发代码了。
先把第一个版本打出来:
移除点击此处添加图片说明文字我们要两个循环,一个是这六个分类的,第二个循环是42页。创建文件,我们推荐是:
以包名算作区分,然后我们使用42个文件作为分页,这里我们猜,肯定要解析的后期,所以,我们爬取数据是很重要的步骤。
首先我们解决python的for循环问题。这是代码
sorts = ["716","1006","722","718","719","837"]
size = sorts.__len__()
for sort in sorts:
print ' =='+sort+'==start=='
其次我们要解决python创建文件夹,给windows创建目录
好的,我粘贴完整代码直接:
#coding:utf-8
'''
Created on 2017年7月11日
coding=UTF-8
@author: lishouzhuang
'''
import urllib
import urllib2
def getPage(url):
request = urllib2.Request(url)
response = urllib2.urlopen(request)
return response.read()
# 豌豆荚网站的影视应用的初级分页
url='http://www.wandoujia.com/category/5029'
# 豌豆荚网站首级元组
sorts = ["716","1006","722","718","719","837"]
size = sorts.__len__()
#我们创建影音分类下所有的六个小类
for sort in sorts:
print ' =='+sort+'==start=='
#接下来,我们要做的是,将每个分类创建一个文件夹,并且在文件夹中,将分页的42个文件放入其中
#首先创建第一个文件
p=1
while p<=42:
# 如果是首页,直接这样,例如 http://www.wandoujia.com/category/5029_716
#视频的第一页
if p==1:
print ' =='+sort+'_'+str(p)+'==start=='
result=getPage(url+'_'+sort)
# 在此处取得网站源码
txt='F:\\python\\file\\result'+'_'+sort+'_'+str(p)+'.html'
f = open(txt,"w+")
f.write(result)
print ' =='+sort+'_'+str(p)+'====end=='
p=p+1
#如果是第二页的话,要加这个东西了
else:
print ' =='+sort+'_'+str(p)+'==start=='
result=getPage(url+'_'+sort+'/'+str(p))
# 在此处取得网站源码
txt='F:\\python\\file\\result'+'_'+sort+'_'+str(p)+'.html'
f = open(txt,"w+")
f.write(result)
print ' =='+sort+'_'+str(p)+'====end=='
p=p+1
f.close()
print 'success'
移除点击此处添加图片说明文字已经将所有页面全部爬下来了。
咱们用java来解析吧,为什么不继续用python了呢,因为妈的坑太多了,让我随随便便加班到10来点,那就用java,等缓缓咱们给出python版本,虽然我想说,python写代码如果熟悉的话确实快的,java要写很多,python写一点点就可以了。果然python很爽啊。
移除点击此处添加图片说明文字
之前几个礼拜我们稍微小小跑了一下python,调度呀、任务呀用了,那么今天我们要写爬虫脚本,第一篇我们搭建了windows的eclipse开发python环境,现在,让我们稍微了解一下python。
本篇引用较多,建议快速阅读。
移除点击此处添加图片说明文字
移除点击此处添加图片说明文字看一下2.6和2.7的特点
移除点击此处添加图片说明文字
移除基本操作python可以看到,python很灵活,像个灵活的猴子。
移除点击此处添加图片说明文字可见python含头不含尾
重头戏来了
移除点击此处添加图片说明文字
移除元组不可变数组元组不可变数组
但是列表是可变的数组
移除但是列表是可变的数组来看看python的异常处理
移除异常处理
移除点击此处添加图片说明文字
移除点击此处添加图片说明文字
URL是URI的一个子集。它是Uniform Resource Locator的缩写,译为“统一资源定位 符”。
通俗地说,URL是Internet上描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上。
采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。
URL的一般格式为(带方括号[]的为可选项):
protocol :// hostname[:port] / path / [;parameters][?query]#fragment
然后,咱们来写一写爬虫吧、
#coding:utf-8
'''
Created on 2017年7月11日
coding=UTF-8
@author: lishouzhuang
'''
import urllib
import urllib2
def getPage(url):
request = urllib2.Request(url)
response = urllib2.urlopen(request)
return response.read()
url='http://www.ebay.com/sch/TShirts-/15687/i.html?Style=Basic Tee&_dcat=15687&Color=Black'
p=0
while p<5:
print ' =='+str(p+1)+'==start=='
result=getPage(url+'&_pgn='+str(p+1))
# txt='F:\\python\\file\\result.html'
# 在此处取得网站源码
txt='F:\\python\\file\\result'+str(p+1)+'.html'
f = open(txt,"w+")
f.write(result)
print ' =='+str(p+1)+'====end=='
p=p+1
f.close()
print 'success'
趴好了之后是这样的:
移除点击此处添加图片说明文字那如果我们要解析格式的话,得要这个东西:
https://www.crummy.com/software/BeautifulSoup/bs4/download/4.6/
下面说一下在Windows下面如何安装Beautiful Soup:
1.到http://www.crummy.com/software/BeautifulSoup/网站上上下载,最新版本是4.1.3。
2.下载完成之后需要解压缩,假设放到D:/python下。
3.运行cmd,切换到D:/python/beautifulsoup4-4.1.3/目录下(根据自己解压缩后的目录和下载的版本号修改),
cd /d D:/python/beautifulsoup4-4.1.3
4.运行命令:
setup.py build
setup.py install
5.在IDE下from bs4 import BeautifulSoup,没有报错说明安装成功。
但是我们setup.py怎么安装?默认会用记事本打开,那么别着急我们
python setup.py install
但是:
移除点击此处添加图片说明文字肯定是环境变量没有。
移除点击此处添加图片说明文字path添加:
移除点击此处添加图片说明文字然后咱们再去安装吧。
移除点击此处添加图片说明文字又报个错,ImportError: No module named setuptools
于是,咱们下载setuptools
移除点击此处添加图片说明文字装好了,很开心,
移除点击此处添加图片说明文字然后可以安装那个东东了。
移除点击此处添加图片说明文字骄傲的结果:
移除点击此处添加图片说明文字咱们再install一下:
移除点击此处添加图片说明文字这个时候,eclipse问我们要不要导包,同意就行了,直接ok哦
移除编译通过咱们运行:
我稍微分析了一下是因为,没有办法解析,没有使用htmlParse这个解析类。。。好尴尬,
python的模块安装在python下的LIB目录下,或Lib\site-packages目录下,找到模块直接删除就可以了
接下来我想先暂停对这个东西的解析了,因为需求是抓取网站的二级和三级结构,我要所有的html即可。
移除点击此处添加图片说明文字然后接着又报这个错误了。
移除点击此处添加图片说明文字
http://www.wandoujia.com/category/5029
咱们要影音播放下载下面所有的应用页面,然后来解析。
需求就是我们要影音播放下载下面的所有视频、直播、音乐、k歌、铃声、收音机
每页我看了一下大概有42页。
然后我们解析一下url
移除点击此处添加图片说明文字
然后视频是716,看下直播是多少:1006
移除点击此处添加图片说明文字音乐是722
移除点击此处添加图片说明文字k歌是718:
移除点击此处添加图片说明文字铃声是917
移除点击此处添加图片说明文字收音机是837:
移除点击此处添加图片说明文字所以,综上,我们确定一下:
视频:http://www.wandoujia.com/category/5029_716
直播:http://www.wandoujia.com/category/5029_1006
音乐:http://www.wandoujia.com/category/5029_722
k歌:http://www.wandoujia.com/category/5029_718
铃声:http://www.wandoujia.com/category/5029_719
收音机:http://www.wandoujia.com/category/5029_837
好了,接下来,我们继续分析分页,关于分页,我们看
移除点击此处添加图片说明文字每个默认有42个分页,好,那我们不管,我们发现,
http://www.wandoujia.com/category/5029_716/2
就是第二页,那么,第一页是:
http://www.wandoujia.com/category/5029_716
好的,接下来,我们得开发代码了。
先把第一个版本打出来:
移除点击此处添加图片说明文字我们要两个循环,一个是这六个分类的,第二个循环是42页。创建文件,我们推荐是:
以包名算作区分,然后我们使用42个文件作为分页,这里我们猜,肯定要解析的后期,所以,我们爬取数据是很重要的步骤。
首先我们解决python的for循环问题。这是代码
sorts = ["716","1006","722","718","719","837"]
size = sorts.__len__()
for sort in sorts:
print ' =='+sort+'==start=='
其次我们要解决python创建文件夹,给windows创建目录
好的,我粘贴完整代码直接:
#coding:utf-8
'''
Created on 2017年7月11日
coding=UTF-8
@author: lishouzhuang
'''
import urllib
import urllib2
def getPage(url):
request = urllib2.Request(url)
response = urllib2.urlopen(request)
return response.read()
# 豌豆荚网站的影视应用的初级分页
url='http://www.wandoujia.com/category/5029'
# 豌豆荚网站首级元组
sorts = ["716","1006","722","718","719","837"]
size = sorts.__len__()
#我们创建影音分类下所有的六个小类
for sort in sorts:
print ' =='+sort+'==start=='
#接下来,我们要做的是,将每个分类创建一个文件夹,并且在文件夹中,将分页的42个文件放入其中
#首先创建第一个文件
p=1
while p<=42:
# 如果是首页,直接这样,例如 http://www.wandoujia.com/category/5029_716
#视频的第一页
if p==1:
print ' =='+sort+'_'+str(p)+'==start=='
result=getPage(url+'_'+sort)
# 在此处取得网站源码
txt='F:\\python\\file\\result'+'_'+sort+'_'+str(p)+'.html'
f = open(txt,"w+")
f.write(result)
print ' =='+sort+'_'+str(p)+'====end=='
p=p+1
#如果是第二页的话,要加这个东西了
else:
print ' =='+sort+'_'+str(p)+'==start=='
result=getPage(url+'_'+sort+'/'+str(p))
# 在此处取得网站源码
txt='F:\\python\\file\\result'+'_'+sort+'_'+str(p)+'.html'
f = open(txt,"w+")
f.write(result)
print ' =='+sort+'_'+str(p)+'====end=='
p=p+1
f.close()
print 'success'
移除点击此处添加图片说明文字已经将所有页面全部爬下来了。
咱们用java来解析吧,为什么不继续用python了呢,因为妈的坑太多了,让我随随便便加班到10来点,那就用java,等缓缓咱们给出python版本,虽然我想说,python写代码如果熟悉的话确实快的,java要写很多,python写一点点就可以了。果然python很爽啊。
移除点击此处添加图片说明文字