• 使用Beautifulsoup爬取药智网数据


    使用Beautifulsoup模块爬取药智网数据

    Tips:1.爬取多页时,先用一页的做测试,要不然ip容易被封

    2.自己常用的处理数据的方法:

    reg=re.compile('正则表达式')
    data=reg.sub('要替换的字符串',data)

    代码(其实没多少)

     1 # encoding=utf-8
     2 from bs4 import  BeautifulSoup
     3 import urllib2
     4 import time
     5 class YBZC():
     6     def __init__(self):
     7         self.user_agent='Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
     8         self.headers={'User-Agent':self.user_agent}
     9     def getHtml(self,pageIndex):
    10         try:
    11             url='http://db.yaozh.com/zhuce?p='+str(pageIndex)
    12             request=urllib2.Request(url,headers=self.headers)
    13             respone=urllib2.urlopen(request)
    14             html=respone.read()
    15             return html
    16         except urllib2.URLError,e:
    17             if hasattr(e,'reason'):
    18                 print u"连接失败",e.reason
    19                 return  None
    20     def getItems(self):
    21         for i in range(1,13):
    22             html=self.getHtml()
    23             soup=BeautifulSoup(html,"html.parser")
    24             tr_list=soup.find_all('tr')
    25             # 表格标题
    26             if i==1:
    27                 for item  in tr_list[0]:
    28                     if item not in ['
    ','	',' ']:
    29                         with open('yaopinzhuce1030.txt','a') as f:
    30                             f.write(item.get_text(strip=True).encode('utf-8')+'|')
    31                 #=========================2015-10-30================================
    32                 # 第一次的时候是现将数据全部都取下来,等存入文件的时候再筛选,现在直接筛选再
    33                 # 存入文件中,当时的时候并没有想到并且没有理解get_text()方法,这个也是
    34                 # 代码不精简的原因。。。。
    35                 #===================================================================
    36                 # list_tit=[]
    37                 # for ths in tr_list[0]:
    38                     # if ths.find('a'):
    39                 #         for item in ths:
    40                 #             if type(item)!=unicode:
    41                 #                 list_tit.append(item.string)
    42                 #     else:
    43                 #         list_tit.append(ths.get_text(strip=True))
    44                 # for item in list_tit:
    45                 #     if item not in ['',' ','
    ','	']:
    46                 #         with open('yaopinzhuce_new.txt','a') as f:
    47                 #             f.write(item.encode('utf-8')+'|')
    48             # 表格内容
    49             f=open('yaopinzhuce1030.txt','a')
    50             for tr in tr_list[1:]:
    51                 f.write('
    ')
    52                 for item in tr:
    53                     if item not in ['',' ','
    ']:
    54                        if item.string==None:
    55                             f.write('None'+'|')
    56                        else:
    57                             f.write(item.string.encode('utf-8')+'|')
    58 
    59             f.close()
    60             print 'sleeping... pageloading %d/12' %i
    61             time.sleep(5)
    62 
    63 
    64 spider=YBZC()
    65 spider.getItems()
  • 相关阅读:
    Android-自定义meta-data扩展数据
    (转载)【Android】ViewGroup全面分析
    小问题记录
    Gson使用 .Net中的日期序列化成带字母T的格式,Gson发序列化问题
    Android中自定义textview可以进行自体设置
    .Net版的BeanUtils
    Ksoap2-android 添加网络超时的实现
    Html5 viewport 解释
    计算两个日期之间相差的月数
    Android中的Adapter内,有getView方法
  • 原文地址:https://www.cnblogs.com/RoundGirl/p/4924235.html
Copyright © 2020-2023  润新知