使用BeautifulSoup爬取药智标准网数据(更改)

来源:互联网 发布:网络存储器 编辑:程序博客网 时间:2024/05/22 03:50
#coding:utf-8import urllib2import bs4from bs4 import BeautifulSoupclass YZBZ():    def __init__(self):        self.pageIndex = 1        self.user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'        self.headers = { 'User-Agent' : self.user_agent }    def getHtml(self,pageIndex):        try:            url='http://db.yaozh.com/biaozhun?p='+ str(pageIndex)            request=urllib2.Request(url,headers=self.headers)            page=urllib2.urlopen(request)            html=page.read()            return html        except urllib2.URLError,e:            if hasattr(e,"reason"):                print u"连接失败",e.reason                return None    def getItems(self):        L=range(1,11)        for pageIndex in L:            html=self.getHtml(pageIndex)            soup=BeautifulSoup(html)            tr_list=soup.find_all("tr")            #写入表格标题            if pageIndex==1:                    with open(r"D:\Python test\yaozhi_biaozhunqqq.txt","a+") as a:                        a.write((tr_list[0].get_text("|",strip=True).encode("utf-8")+"|"+"\n"))            #写入表格内容            f=open(r"D:\Python test\yaozhi_biaozhunqqq.txt","a+")            #主要是数据中有空白项,若不将空白进行替换数据项将无法对齐            for tr in tr_list[1:]:                f.write('\n')                for item in tr:                    if item not in ('',' ','\n'):                       if item.string==None:                           f.write("None"+"|")                       else:                           f.write(item.string.encode('utf-8')+'|')            f.close()spider=YZBZ()spider.getItems()


小某说:

写过一篇关于药智网的博客,后来由于不会进行修改,便搁置了,没有进行详细的说明。再后来发现代码并不完善,在此重新写一篇来进行更正。

第一次的思路主要就是把数据爬下来直接写入没有进行筛选,没有想到空白的处理。

这次是先筛选后写入。先写入表格标题,没有空白处理直接写入就行。在处理表格内容时,遇到空白则写入“None”,否则读取并写入。这样代码变得简洁些。

0 0
原创粉丝点击