re 正则表达式 爬取网站标题

import requests
import re

url = 'http://www.jd.com/'
#url='http://www.eastmoney.com/' r=requests.get(url) r.encoding='utf-8' data=re.findall('<title>(.*?)</title>',r.text,re.S) print(data)

['京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!']

['东方财富网:财经门户,提供专业的财经、股票、行情、证券、基金、理财、银行、保险、信托、期货、黄金、股吧、博客等各类财经资讯及数据']

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import re
 
# 提取python
key = "javapythonc++php"
re.findall("python", key)[0]
"""
python
"""
 
# 提取出hello world
key = "<html><h1>hello world</h1></html>"
re.findall('<h1>hello world</h1>', key)
"""
['<h1>hello world</h1>']
"""
 
# 提取170
string = "我喜欢身高为170的女孩"
# re.findall("170", string)[0]
re.findall('\d+', string)
"""
['170']
"""
 
# 提取出http://和https://
key = 'http://www.baidu.com and https://boob.com'
re.findall('https{0,1}', key)   # {}前的字符出现0次或1次
"""
['http', 'https']
"""
 
# 提取出hit.
key = "bobo@hit.edu.com"
re.findall("h.*\.", key)   # .表示任意字符(\n除外);*表示匹配0个或多个;\表示对.转义
"""
['hit.edu.']
"""
# 贪婪模式:根据正则表达式尽可能多地提取数据。
# 切换为非贪婪模式,加一个"?"
re.findall("h.*?\.", key)
"""
['hit.']
"""
 
# 匹配sas和saas
key = "saas and sas and saaas"
re.findall('sa{1,2}s', key)    # 匹配1-2次由前面表达式定义的片段
"""
['saas', 'sas']
"""
 
# 匹配i开头的行  re.S:基于单行匹配    re.M:基于多行匹配
string = '''fall in love with you
i love you very much
i love she
i love her'''
re.findall("^i.*", string, re.M)
"""
['i love you very much', 'i love she', 'i love her']
"""
 
# 匹配所有的行
string = """<div>静夜思
床前明月光
疑是地上霜
举头望明月
低头思故乡
</div>"""
re.findall('<div>.*</div>', string, re.S)
"""
['<div>静夜思\n床前明月光\n疑是地上霜\n举头望明月\n低头思故乡\n</div>']
"""

 

posted @ 2020-02-18 17:27  徐海建  阅读(886)  评论(0编辑  收藏  举报