Python开发爬虫,爬取网站

第二篇,爬取数据



 移除点击此处添加图片说明文字

​之前几个礼拜我们稍微小小跑了一下python,调度呀、任务呀用了,那么今天我们要写爬虫脚本,第一篇我们搭建了windows的eclipse开发python环境,现在,让我们稍微了解一下python。

本篇引用较多,建议快速阅读。

  移除点击此处添加图片说明文字

  移除点击此处添加图片说明文字

​看一下2.6和2.7的特点

  移除点击此处添加图片说明文字

  基本操作python移除基本操作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含头不含尾

重头戏来了

  移除点击此处添加图片说明文字

  元组不可变数组移除元组不可变数组

​元组不可变数组

但是列表是可变的数组

  但是列表是可变的数组移除但是列表是可变的数组

​来看看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很爽啊。

  移除点击此处添加图片说明文字