BigSmall 发表于 2018-12-9 14:36:52

正则表达式不会写

本帖最后由 BigSmall 于 2018-12-9 14:48 编辑

import urllib.request as req
import re

wangye='http://dq.tieba.com/p/4879271427#!/l/p1'
wangyeneirong=req.urlopen(wangye)
wangyeneirongjiema=wangyeneirong.read().decode('utf-8')

p=r'<img id="dlg_pi_img" src="([^"]+\.jpg)"'
pic_dizhi=re.findall(p,wangyeneirongjiema)
print(pic_dizhi)

i=1
for each in pic_dizhi:
    pic_wangyeneirong=req.urlopen(each)
    pic_erjinzhi=pic_wangyeneirong.read()
    with open (str(i)+'.jpg','wb') as f:               
      f.write(pic_erjinzhi)
    i+=1
    if i==4:
      break


不太会写正则表达式,这个时照着小甲鱼的视频写的,但是匹配不到照片的网址
网站
http://dq.tieba.com/p/4879271427#!/l/p1

各位大神帮忙看看

凌九霄 发表于 2018-12-9 15:58:43

不会写就要去学习正则表达式,即使告诉你这一次也没有用。个人觉得正则除了多练习,没有其他捷径。

BigSmall 发表于 2018-12-9 17:34:54

凌九霄 发表于 2018-12-9 15:58
不会写就要去学习正则表达式,即使告诉你这一次也没有用。个人觉得正则除了多练习,没有其他捷径。

好的,确实得好好看一下,这个还是比较难的。这个代码能否先帮忙更正一下?谢谢

凌九霄 发表于 2018-12-9 18:42:35

BigSmall 发表于 2018-12-9 17:34
好的,确实得好好看一下,这个还是比较难的。这个代码能否先帮忙更正一下?谢谢

tieba代码变了,从你提供的网址进去,没看见id="dlg_pi_img" 的块

BigSmall 发表于 2018-12-9 20:18:17

凌九霄 发表于 2018-12-9 18:42
tieba代码变了,从你提供的网址进去,没看见id="dlg_pi_img" 的块

难道是图片的地址就找错了?

loster0219 发表于 2018-12-11 14:55:47

正则这玩意,只能熟悉规则后去练习,没有什么一套正则套用进一个网站就能爬的,就算告诉你这个网站的正则怎么写,那过段时间搞不好人家网站改版了,结构变了,这套正则就不能用了,还是要学会灵活运用

xy123151 发表于 2018-12-11 17:30:57

BigSmall 发表于 2018-12-9 20:18
难道是图片的地址就找错了?

去network里可以找到图片的请求头
页: [1]
查看完整版本: 正则表达式不会写