标签:字符 print 元素 1.3 title 正则表达 inf continue mooc
在Python中正则表达式库需要导入re库
import re
正则表达式需要使用原生字符串来表达, 原生字符串(raw shtring)在普通的字符串前面加 r 表示
search(pattern, string, flags=0)
search用于在字符串中搜索, 并且返回第一个位置的match对象
pattern: 正则表达式字符串
string: 待匹配的字符串
flags: 控制标记
re.I 忽略大小写
re.M ^能够将每行当做匹配的开始
re.S .能够匹配所有字符 (正常.只能匹配出换行以外的所有)
match(pattern, string, flahs=0)
从字符串开始匹配,是匹配, 如果不匹配的话就返回None, 匹配返回match对象
三个参数与search()相同
findall(pattern, string, flahs=0)
与search()不同, findall()会查找到所有满足匹配的, 且返回匹配的字符串形成的列表
三个参数与search()相同
split(pattern, string, maxsplit=0, flags=0)
是根据正则表达式来分割字符串, 形成一个列表返回
相同三个参数用法不变
maxsplit: 是最大分割数, 超过之后会吧剩余的作为一个元素输出
finditer(pattern, string, flahs=0)
功能与findall()一致, 只是返回迭代器内含match对象
三个参数与search()相同
sub(pattern, repl, string, count, flahs=0)
将匹配成功的字符串替换成repl
相同三个参数用法不变
repl: 替换成的字符串
count: 最大替换次数
主要, re库的等价形式:
>>> rst = re.search(r‘[1‐9]\d{5}‘, ‘BIT 100081‘)
等同于
>>> pat = re.compile(r‘[1‐9]\d{5}‘)
>>> rst = pat.search(‘BIT 100081‘)
如果利用compile()方法的话, 上述的方法就少写第一个参数
Match有以下属性
Match对象的方法
在默认的情况下, Python的正则匹配是贪婪匹配, 但是也有用的到最少匹配的情况, 此时需要使用?来标识
具体形式如下
通过正则表达式匹配淘宝网页, 来获取商品价格和商品名称
具体代码如下
import requests
import re
def getHTMLText(url):
try:
r = requests.get(url, timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return ""
def parsePage(ilt, html):
try:
plt = re.findall(r‘\"view_price\"\:\"[\d\.]*\"‘, html)
tlt = re.findall(r‘\"raw_title\"\:\".*?\"‘, html)
for i in range(len(plt)):
price = eval(plt[i].split(‘:‘)[1])
title = eval(tlt[i].split(‘:‘)[1])
ilt.append([price, title])
except:
print("")
def printGoodsList(ilt):
tplt = "{:4}\t{:8}\t{:16}"
print(tplt.format("序号", "价格", "商品名称"))
count = 0
for g in ilt:
count = count + 1
print(tplt.format(count, g[0], g[1]))
def main():
goods = ‘书包‘
depth = 3
start_url = ‘https://s.taobao.com/search?q=‘ + goods
infoList = []
for i in range(depth):
try:
url = start_url + ‘&s=‘ + str(44 * i)
html = getHTMLText(url)
parsePage(infoList, html)
except:
continue
printGoodsList(infoList)
main()
标签:字符 print 元素 1.3 title 正则表达 inf continue mooc
原文地址:http://www.cnblogs.com/weihuchao/p/6705898.html