Python正则表达式详解

抓取数据脚本这个例子中,我们通过计算数组中的数据所在位置,将不同类型的数据区分开来。

最终实现这个功能之前,我们采用的区分方式是正则。这里作说明。

downjoyGoChartUrl="http://money.downjoy.com/connectchannel/list_prompt_new_channel_stat.html?startDate=%s&endDate=%s"%(lastDayDateStr,todayStr )
resp=urllib2.urlopen(downjoyGoChartUrl)
html = resp.read().decode('utf-8').encode('gbk')
soup = BeautifulSoup(html,"html.parser")

#a =soup.findAll(name="td", attrs={},text=re.compile("[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]"))
#a =soup.findAll(name="td", attrs={},text=re.compile("[\u4e00-\u9fa5]"))

gameName =soup.findAll(name="td", attrs={},text=re.compile("[\xb0-\xf7][\xa0-\xfe]"))
gameName=delTag(gameName)
#writeCsv(gameName)

date=soup.findAll(name="td", attrs={},text=re.compile("\d+\-\d+"))
date=delTag(date)
#writeCsv(date)

account=soup.findAll(name="td", attrs={},text=re.compile("\d+\.\d+"))
account=delTag(account)
#writeCsv(account)

times=soup.findAll(name="td", attrs={},text=re.compile("^\d+\s*$"))
times=delTag(times)
#writeCsv(times)
代码中我们可以看到,取不同的数据用了不同的正则表达式。

从上到下依次为:中文、2015-10-11、小数、整数

通过正则将他们放入不同的数组中然后写入文件。后三者都是数字,写入没有任何问题。

但是中文,因为乱码的问题一直得不到解决,直到后来我们不得不放弃这种方式。

但是这里我们作一下记录,因为虽然乱码,但的确可以选择出来:

gb2312汉字范围

[\xb0-\xf7][\xa0-\xfe]
utf-8汉字范围(虽然查到的资料是,但如果选出来,包含数字在内全部都被选择出来了,知道有这么个区间就可以了)

[\u4e00-\u9fa5]


接下来对Python的正则表达式做一下记录。

Python正则表达式详解

该链接中对Python表达式的总结较为全面精准,可以到这里查阅。

你可能感兴趣的:(5,Python网页爬虫,python)