关于正则表达式的问题,请各位高手帮助
<div id="list" class="proLis"><ul>
<li><a href="/UserFiles/海报202003/20014/3-08081949579.jpg" target="_blank">
<img src="/UserFiles/海报202003/20014/3-08081949579.jpg" width="165" height="117"><br>
<span>
第20014期——3页</span></a></li>
<li><a href="/UserFiles/海报202003/20014/4-08082166642.jpg" target="_blank">
<img src="/UserFiles/海报202003/20014/4-08082166642.jpg" width="165" height="117"><br>
<span>
第20014期——4页</span></a></li>
<li><a href="/UserFiles/海报202003/20014/5-08082087384.jpg" target="_blank">
<img src="/UserFiles/海报202003/20014/5-08082087384.jpg" width="165" height="117"><br>
<span>
第20014期——5页</span></a></li>
<li><a href="/UserFiles/海报202003/20014/6-08082978579.jpg" target="_blank">
<img src="/UserFiles/海报202003/20014/6-08082978579.jpg" width="165" height="117"><br>
<span>
第20014期——6页</span></a></li>
<li><a href="/UserFiles/海报202003/20014/7-08083044846.jpg" target="_blank">
<img src="/UserFiles/海报202003/20014/7-08083044846.jpg" width="165" height="117"><br>
<span>
第20014期——7页</span></a></li>
<li><a href="/UserFiles/海报202003/20014/8-08083082937.jpg" target="_blank">
<img src="/UserFiles/海报202003/20014/8-08083082937.jpg" width="165" height="117"><br>
<span>
第20014期——8页</span></a></li>
<li><a href="/UserFiles/海报202003/20014/9-08082942326.jpg" target="_blank">
<img src="/UserFiles/海报202003/20014/9-08082942326.jpg" width="165" height="117"><br>
<span>
第20014期——9页</span></a></li>
<li><a href="/UserFiles/海报202003/20013/1-17295275498.jpg" target="_blank">
<img src="/UserFiles/海报202003/20013/1-17295275498.jpg" width="165" height="117"><br>
<span>
第20013期——1页</span></a></li>
<li><a href="/UserFiles/海报202003/20013/2-17295416077.jpg" target="_blank">
<img src="/UserFiles/海报202003/20013/2-17295416077.jpg" width="165" height="117"><br>
<span>
第20013期——2页</span></a></li>
<li><a href="/UserFiles/海报202003/20013/3-17295337112.jpg" target="_blank">
<img src="/UserFiles/海报202003/20013/3-17295337112.jpg" width="165" height="117"><br>
<span>
第20013期——3页</span></a></li>
<li><a href="/UserFiles/海报202003/20013/4-07484960541.jpg" target="_blank">
<img src="/UserFiles/海报202003/20013/4-07484960541.jpg" width="165" height="117"><br>
<span>
第20013期——4页</span></a></li>
<li><a href="/UserFiles/海报202003/20013/5-17295357855.jpg" target="_blank">
<img src="/UserFiles/海报202003/20013/5-17295357855.jpg" width="165" height="117"><br>
<span>
第20013期——5页</span></a></li>
</ul>
<div class="clear">
以上我想把所有的<img src=和 width 之间的jpg地址提取出来
我写了一个正则
响应数据就是上面这些数据
a = '<div id="list" class="proLis">.*?<img src="(.*?)" width.*?<div class="clear">'
r = re.findall(a,响应数据,re.S)
print(r)
可是我只提取了一条,返回的列表里只有一条,并没有把12个都提取出来
['/UserFiles/海报202003/20015/1-15510642492.jpg'] 本帖最后由 qiuyouzhi 于 2020-4-14 14:04 编辑
直接用BeautifulSoup不好吗?
target = soup('img')
for each in target:
print(each['src]') qiuyouzhi 发表于 2020-4-14 13:20
直接用BeautifulSoup不好吗?
少敲半个中括号 本帖最后由 悠悠2264 于 2020-4-14 14:22 编辑
因为正则表达式不会去重复匹配(<div id="list" class="proLis">只会匹配一次),所以应该写成:
import re
p = re.compile('(?<=<img src=").*?(?=" width="165" height="117">)')
find = p.findall(响应数据) 本帖最后由 hrp 于 2020-4-14 15:06 编辑
#-*-coding:utf8-*-
import re
响应数据 = '''<div id="list" class="proLis">
<ul>
<li><a href="/UserFiles/海报202003/20014/3-08081949579.jpg" target="_blank">
<img src="/UserFiles/海报202003/20014/3-08081949579.jpg" width="165" height="117"><br>
<span>
第20014期——3页</span></a></li>
<li><a href="/UserFiles/海报202003/20014/4-08082166642.jpg" target="_blank">
<img src="/UserFiles/海报202003/20014/4-08082166642.jpg" width="165" height="117"><br>
<span>
第20014期——4页</span></a></li>
<li><a href="/UserFiles/海报202003/20014/5-08082087384.jpg" target="_blank">
<img src="/UserFiles/海报202003/20014/5-08082087384.jpg" width="165" height="117"><br>
<span>
第20014期——5页</span></a></li>
<li><a href="/UserFiles/海报202003/20014/6-08082978579.jpg" target="_blank">
<img src="/UserFiles/海报202003/20014/6-08082978579.jpg" width="165" height="117"><br>
<span>
第20014期——6页</span></a></li>
<li><a href="/UserFiles/海报202003/20014/7-08083044846.jpg" target="_blank">
<img src="/UserFiles/海报202003/20014/7-08083044846.jpg" width="165" height="117"><br>
<span>
第20014期——7页</span></a></li>
<li><a href="/UserFiles/海报202003/20014/8-08083082937.jpg" target="_blank">
<img src="/UserFiles/海报202003/20014/8-08083082937.jpg" width="165" height="117"><br>
<span>
第20014期——8页</span></a></li>
<li><a href="/UserFiles/海报202003/20014/9-08082942326.jpg" target="_blank">
<img src="/UserFiles/海报202003/20014/9-08082942326.jpg" width="165" height="117"><br>
<span>
第20014期——9页</span></a></li>
<li><a href="/UserFiles/海报202003/20013/1-17295275498.jpg" target="_blank">
<img src="/UserFiles/海报202003/20013/1-17295275498.jpg" width="165" height="117"><br>
<span>
第20013期——1页</span></a></li>
<li><a href="/UserFiles/海报202003/20013/2-17295416077.jpg" target="_blank">
<img src="/UserFiles/海报202003/20013/2-17295416077.jpg" width="165" height="117"><br>
<span>
第20013期——2页</span></a></li>
<li><a href="/UserFiles/海报202003/20013/3-17295337112.jpg" target="_blank">
<img src="/UserFiles/海报202003/20013/3-17295337112.jpg" width="165" height="117"><br>
<span>
第20013期——3页</span></a></li>
<li><a href="/UserFiles/海报202003/20013/4-07484960541.jpg" target="_blank">
<img src="/UserFiles/海报202003/20013/4-07484960541.jpg" width="165" height="117"><br>
<span>
第20013期——4页</span></a></li>
<li><a href="/UserFiles/海报202003/20013/5-17295357855.jpg" target="_blank">
<img src="/UserFiles/海报202003/20013/5-17295357855.jpg" width="165" height="117"><br>
<span>
第20013期——5页</span></a></li>
</ul>
<div class="clear">'''
res = re.findall(r'(?<=\<img src\=").+(?=" width)', 响应数据)
print(res)
我感觉特奇怪
import re
a = 'life is short,i use python life is short,i use python life is short,i use python'
r = re.findall('life(.*)python',a)
print(r)
我这样可以提取所有的 可是我现在应用到网页上就只能提取一条
页:
[1]