分享

盘点一个Python网络爬虫的正则表达式问题

 Python进阶者 2023-09-23 发布于广东
当奖率三军,北定中原。

大家好,我是皮皮。

一、前言

前几天在Python钻石群【空】问了一个Python网络爬虫的问题,一起来看看吧。下面是他的代码。

mport re

html='''
< img src="//www.chinadaily.com.cn/image_e/2017/logo.png" alt="chinadaily" />
        </a >
      </div>
      <div class="fl-right">
        <a href="//cn.chinadaily.com.cn" target="_top" shape="rect">< img src="//www.chinadaily.com.cn/image_e/2017/cnbut.png" />


'''


# print(html)
reg=r"<img.+src="
m=re.search(reg,html)
print(m)
a=m.end()
# print(a)
s=html[a:]
# print(s)
n=re.search(r"\".+\"",s)
# print(n)
b=n.end()
# print(b)
src=s[:b]
print(src)

二、实现过程

后来【瑜亮老师】给了一个建议,代码如下所示:

import re

html = '''
< img src="//www.chinadaily.com.cn/image_e/2017/logo.png" alt="chinadaily" />
        </a >
      </div>
      <div class="fl-right">
        <a href="//cn.chinadaily.com.cn" target="_top" shape="rect">< img src="//www.chinadaily.com.cn/image_e/2017/cnbut.png" />


'''

reg = r'< img src="//(.*?)"'
m = re.findall(reg, html)
print(m)

这样就可以获取所有的图片地址,顺利地解决了粉丝的问题。

后来还给了一个具体的爬虫代码,如下所示:

url="http://www.chinadaily.com.cn/"
html = requests.get(url).text
reg = r'img src="//(.*?)"'
img = re.findall(reg, html)

for i in img:
    i = "http://" + i
    if 'jpeg_w642' in i:
        i = i.replace('.jpeg_w642''.jpeg')
    resp = requests.get(i).content
    with open(i.split('/')[-1], 'wb') as f:
        f.write(resp)

这样就可以抓取到对应的图片了,非常完美。

三、总结

大家好,我是皮皮。这篇文章主要盘点了一个Python网络爬虫中正则表达式的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

最后感谢粉丝【空】提问,感谢【瑜亮老师】给出的思路和代码解析,感谢【莫生气】等人参与学习交流。

【提问补充】温馨提示,大家在群里提问的时候。可以注意下面几点:如果涉及到大文件数据,可以数据脱敏后,发点demo数据来(小文件的意思),然后贴点代码(可以复制的那种),记得发报错截图(截全)。代码不多的话,直接发代码文字即可,代码超过50行这样的话,发个.py文件就行。


------------------- End -------------------

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多