abababab 发表于 2020-5-20 14:44:35

正则循环匹配爬取文件

本帖最后由 abababab 于 2020-5-22 15:44 编辑

知道网页附件路径
https://www.test.com/202003/03/130943sh5rzvjh65tktz55.png


只知道这个链接,没有其他链接的情况下,能爬取全部?

循环匹配下载?



For x = 1 To 31
For y = 0 To


https://www.test.com/202003/x/y.png

wp231957 发表于 2020-5-20 14:46:45

xpath 不行吗

Twilight6 发表于 2020-5-20 14:55:09

本帖最后由 Twilight6 于 2020-5-20 16:57 编辑

这样是你想要的结果吗?
import re

str1 = """
https://www.test.com/20204503/03/134530943sh65tk5rzkzv8t.png
https://www.test.com/2135403/03/130943sh55rz55jh65tjhtz55.png
https://www.test.com/2015403/03/130943sh5rzv5h65tk4tz552.png
"""

base = 'https://www.test.com/'
temp = re.findall(r'https://www.test.com/(.+?).png',str1)
print(temp)

for i in range(len(temp)):

    temp = base+temp
print(temp)

如果对你有帮助,就给个最佳吧~{:10_287:}

suchocolate 发表于 2020-5-20 14:56:01

原始网页是什么,test.com登陆不上。

Twilight6 发表于 2020-5-20 16:59:12



import re

str1 = """
https://www.test.com/20204503/03/134530943sh65tk5rzkzv8t.png
https://www.test.com/2135403/03/130943sh55rz55jh65tjhtz55.png
https://www.test.com/2015403/03/130943sh5rzv5h65tk4tz552.png
"""

base = 'https://www.test.com/'
temp = re.findall(r'https://www.test.com/(.+?).png',str1)
print(temp)

for i in range(len(temp)):

    temp = base+temp
print(temp)

我发现代码带链接的会被审核?好烦....
你是想要这种效果吗?
如果对你有帮助的话记得给个最佳哈~{:10_287:}

abababab 发表于 2020-5-20 19:52:14

Twilight6 发表于 2020-5-20 16:59

import re



问题是str1只知道其中一个,其他的不知道,所以想用正则找出全部。。。

Twilight6 发表于 2020-5-20 19:53:03

abababab 发表于 2020-5-20 19:52
问题是str1只知道其中一个,其他的不知道,所以想用正则找出全部。。。

只知道其中一个? 那没办法找规律了呀,怎么会只知道一个呢?

abababab 发表于 2020-5-20 19:56:06

suchocolate 发表于 2020-5-20 14:56
原始网页是什么,test.com登陆不上。

只是举例。。。

abababab 发表于 2020-5-20 20:13:33

Twilight6 发表于 2020-5-20 19:53
只知道其中一个? 那没办法找规律了呀,怎么会只知道一个呢?

For x = 1 To 31
For y = 0 To


https://www.test.com/202003/x/y.png

有没可能用for循环?

Twilight6 发表于 2020-5-20 20:17:55

abababab 发表于 2020-5-20 20:13
For x = 1 To 31
For y = 0 To



我看你发的链接数据全是https://www.test.com/开头的 我觉的你可以用我这个匹配的到全部了

base = 'https://www.test.com/'
temp = re.findall(r'https://www.test.com/(.+?).png',str1)
print(temp)

for i in range(len(temp)):

    temp = base+temp
print(temp)

Twilight6 发表于 2020-5-20 20:19:15

abababab 发表于 2020-5-20 20:13
For x = 1 To 31
For y = 0 To



没见过这种用法,不知道可以不可以
不过我看你给的链接数据全部都是
'https://www.test.com/'
开始的 ,那我这个代码就没问题可以匹配到全部附件
base = 'https://www.test.com/'
temp = re.findall(r'https://www.test.com/(.+?).png',str1)
print(temp)

for i in range(len(temp)):

    temp = base+temp
print(temp)

abababab 发表于 2020-5-21 20:25:50

Twilight6 发表于 2020-5-20 20:19
没见过这种用法,不知道可以不可以
不过我看你给的链接数据全部都是
'https://www.test.com/'


NameError: name 'str1' is not defined

Twilight6 发表于 2020-5-21 20:26:27

abababab 发表于 2020-5-21 20:25
NameError: name 'str1' is not defined

str1只是个变量名而已,你改成你自己的字符串变量名就好了

Twilight6 发表于 2020-5-21 20:27:26

abababab 发表于 2020-5-21 20:25
NameError: name 'str1' is not defined

如果对你有帮助 记得给 个最佳~{:10_297:}

均昊山 发表于 2020-5-21 20:57:01

多发几个连接 130943sh5rzvjh65tktz55   看看有啥规律

abababab 发表于 2020-5-21 21:55:23

Twilight6 发表于 2020-5-21 20:27
如果对你有帮助 记得给 个最佳~

知道是变量名,问题是这变量哪来的?

abababab 发表于 2020-5-21 22:24:22

均昊山 发表于 2020-5-21 20:57
多发几个连接 130943sh5rzvjh65tktz55   看看有啥规律

005318iq0rjkq0ak80c8as.png
151611nwnsnwv90gagfpgv.png

都是随机字符吧

均昊山 发表于 2020-5-21 22:52:30

abababab 发表于 2020-5-21 22:24
005318iq0rjkq0ak80c8as.png
151611nwnsnwv90gagfpgv.png



/ .png 这个应该可以吧

Stubborn 发表于 2020-5-21 23:01:34

需要更多的链接,RE本身比较看重规则,说白了就是规则提取


kaohsing 发表于 2020-5-22 07:13:19

越看越不明白,开始觉得是findall uri,后面又说不知变量不知哪里来,觉得是test url,拎不清,
页: [1] 2
查看完整版本: 正则循环匹配爬取文件