跟着鬼哥学爬虫-4-根据需求爬工作需要内容

跟着鬼哥学爬虫-4-根据需求爬工作需要内容


学习爬虫不是为了好玩,也是为了能够使得我们的工作更加简单方便的开展。


0x01:需求


朋友找来需要帮忙爬一个网站的数据,我们先贴图:

http://hospital.yuemei.com/rate/shanghai/p1.html


这个医院类的网站的一些医院名称,医院资质,医院介绍,医院地址,方便市场和商务去谈合作,所以如果一条一条查看数据,整理表格就太浪费时间了。


所以我们先分析看一下如果来开展。


0x02:开始


我们先打开网址看一下:





看到红色标注的信息,也就是我们需要的数据了。


0x03:整理需求


<div class="hos-related">
 <span class="item1"><a target="_blank" href="http://www.yuemei.com/hospital/7268/">上海江依南医疗美容门诊部</a></span>
 <div class="item2">
 <div class="inline"><i>资质:</i><b>民营</b><b>美容门诊部</b></div>
 <div class="hos-atr minying">
 <span>悦美认证民营医院</span>
 <p class="hide-more">
 <i></i>
 <span>类型:美容门诊部</span>
 <span>该机构已通过<a target="_blank" href="http://www.yuemei.com/vcard/7268/"><i>悦美身份认证</i></a></span>
 </p>
 </div>
 </div>
 <span class="item2"><i>地址:</i><b>上海市静安区凤阳路560</b></span>
 <a target="_blank" href="http://www.yuemei.com/hospital/7268/" class="item3">查看医院</a>
</div>



截取名称,资质,地址。


所以我们需要分析select的数据了。


在这里,通过上面红色标注,我们这样写:someData= soup1.select("div.hosList div.hos-related")


然后后面我们需要获取三个数据段内容了。


这里,使用了前面文章中讲的Tag的属性,来获取其Child,来一步一步达到我们需要的数据。


这里直接贴代码了:


    soup1=BeautifulSoup(html,"lxml")

    someData= soup1.select("div.hosList div.hos-related")

    for d in someData:

        name= d.findChild("span",attrs={"class":"item1"}).find("a").text


三个数据,放到一块一起获取出来即可。


现在,我们还需要将数据保存出来,既然都可以获取了 ,为啥不能做成表格呢?


这里我们用到的是csv库。


import sys


        fff=open('ggz.csv','wb')

        spamwriter = csv.writer(fff,dialect='excel')

        spamwriter.writerow(["name","zizhi","address"])

然后这里写上上面我们获取到的内容。


也就是全部代码为:

# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
import urllib2
import csv
import sys

def getSomePageMd5(i):



    url = 'http://hospital.yuemei.com/rate/shanghai/p'+str(i)+".html"

    print url

    response = urllib2.urlopen(url)

    html =response.read()

    soup1=BeautifulSoup(html,"lxml")

    someData= soup1.select("div.hosList div.hos-related")

    for d in someData:

        name= d.findChild("span",attrs={"class":"item1"}).find("a").text

        zizhi_div= d.findChild("div",attrs={"class":"item2"})

        zi = zizhi_div.findChild("div",attrs={"class":"inline"})

        zizhi=""

        for s in zi.children:

            zizhi+=s.text+" "

        address_div= d.findChild("span",attrs={"class":"item2"})

                address= ""

                for i in address_div:

                address+= i.text

                #print address
                spamwriter.writerow([name,zizhi,address])
            #print name+"   "+zizhi+ "    "+address








if __name__ == "__main__":

        reload(sys)
        sys.setdefaultencoding('utf8')

        fff=open('ggz.csv','wb')

        spamwriter = csv.writer(fff,dialect='excel')

        spamwriter.writerow(["name","zizhi","address"])

    #getSomePageMd5()
    for i in range(1,11):

        getSomePageMd5(i)


效果图:



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值