jjxx2005 发表于 2020-4-14 13:17:47

关于正则表达式的问题,请各位高手帮助

<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 13:20:18

本帖最后由 qiuyouzhi 于 2020-4-14 14:04 编辑

直接用BeautifulSoup不好吗?
target = soup('img')
for each in target:
    print(each['src]')

永恒的蓝色梦想 发表于 2020-4-14 14:02:40

qiuyouzhi 发表于 2020-4-14 13:20
直接用BeautifulSoup不好吗?

少敲半个中括号

悠悠2264 发表于 2020-4-14 14:19:34

本帖最后由 悠悠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:05:21

本帖最后由 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)



jjxx2005 发表于 2020-4-14 15:22:17

我感觉特奇怪

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]
查看完整版本: 关于正则表达式的问题,请各位高手帮助