我想要提取的网址具有相同的模式:
"begin" : "url_I_want_extract"
他们看起来像:
"begin" : "https://k2.website.com/images/0x0/0x0/0/16576946054146395951.jpeg"
"begin" : "https://k2.website.com/images/0x0/0x0/0/9460365509030976330.jpeg"
"begin" : "https://k2.website.com/images/0x0/0x0/0/9361112829030898475.jpeg"
"begin" : "https://k3.website.com/images/0x0/0x0/0/14705723619301900580.jpeg"
"begin" : "https://k3.website.com/images/8x36/922x950/0/1368601155311066426.jpeg"
我使用这段代码来提取但却意外的事情。
r = re.findall('https://k(.?).website.com/images/0x0/0x0/0/(.*?).jpeg', response.text)
我得到的输出:
[('2', '16576946054146395951'), ('2', '9460365509030976330'), ('2', '9361112829030898475'), ('3', '14705723619301900580')]
我想要的输出:
https://k2.website.com/images/0x0/0x0/0/16576946054146395951.jpeg
https://k2.website.com/images/0x0/0x0/0/9460365509030976330.jpeg
https://k2.website.com/images/0x0/0x0/0/9361112829030898475.jpeg
https://k3.website.com/images/0x0/0x0/0/14705723619301900580.jpeg
https://k3.website.com/images/8x36/922x950/0/1368601155311066426.jpeg
""开始""如何使用正则表达式来抓取网址?这个词?谢谢:))
答案 0 :(得分:2)
括号围绕findall
返回的捕获组。现在,您的捕获组是k(.>)
和(.*?).jpeg
。删除这些括号,然后捕获整个网址。
另外,要将url与“/ 0x0 / 0x0 / 0 /”和“/ 8x36 / 922x950 / 0 /”匹配,请将正则表达式中的“/ 0x0 / 0x0 / 0 /”替换为“/.*/” * / * /“:
r = re.findall('(https://k.?.website.com/images/.*/.*/.*/.*?.jpeg)', response.text)
答案 1 :(得分:1)
这个可以在更通用的服务器路径构造上做到这一点:
https?.*(jpeg|jpg|png|tiff|gif)
开始捕获http(对于ssl服务器使用可选的's')并完成捕获以确保图像文件格式。 (请注意,我仅包括5种类型......)
希望有所帮助!!
答案 2 :(得分:1)
我认为您要求的是仅在begin :
之后提取网址。为此您需要:
r = re.findall('"begin" : "(https://k.*?.jpeg)"', response.text)