0
votes

Trouver toutes les URL en une seule ligne

J'essaie de chercher une page qui a de nombreuses URL et d'autres choses tout en une seule ligne dans un texte brut comme xxx

i fatigué xxx

Le contenu d'impression me donnera le "link_url": sortie Mais je dois trouver xxx

et sortie uniquement link1 et link2 dans un fichier comme xxx


3 commentaires

Quelles sont les données en réponse? Il n'est pas effacé, je suis en fait derrière le proxy, je ne peux pas l'exécuter moi-même


Est-ce une API JSON? Votre réponse semble avoir des fautes de frappe, pouvez-vous nous donner un meilleur exemple?


Bonjour pourriez-vous nous donner une explication claire de ce que vous voulez poser avec un exemple.


5 Réponses :


0
votes

Essayez xxx


0 commentaires

1
votes

Si c'est une chaîne et non un objet JSON, vous pouvez le faire, même si c'est un peu hacky: xxx pré>

qui donne: p> xxx Pré>

Bien que je pense que @ al76 ​​ code> La réponse est plus élégante pour cela. p>

mais si c'est un JSON qui ressemble à: p>

import json
s1 = "[{ \"link_url \": \"http://www.example.com/link1?site=web \", \"mobile_link_url \": \"http://m.example.com/episode/link1?site=web \"}, { \"link_url \": \"http://www.example.com/link2?site=web \", \"mobile_link_url \": \"http://m.example.com/episode/link2?site=web \"} ]"
data = json.loads(s1)
links = [y for x in data for y in x.values()]

for link in links:
    print(link)


0 commentaires

1
votes

Le code ci-dessous pourrait être ce dont vous avez besoin.

import re

urls = '''"link_url":"http://www.example.com/link1?site=web","mobile_link_url":"http://m.example.com/episode/link1?site=web" link_url":"http://www.example.com/link2?site=web","mobile_link_url":"http://m.example.com/episode/link2?site=web"'''

links = re.findall(r'http://www[a-z/.?=:]+(link\d)+', urls)
print(links)


0 commentaires

1
votes

S'il s'agit d'une API JSON, vous pouvez utiliser intervention.json () code> pour obtenir un dictionnaire Python, comme .text code> vous donnera la réponse comme une chaîne longue. .

Vous n'avez pas non plus besoin d'utiliser regex pour quelque chose de si simple, Python est livré avec un analyseur d'URL hors de la boîte. P>

Ainsi fournie votre réponse est quelque chose comme P>

from urllib.parse import urlparse
import requests


response = requests.get("http://api.example.com/?callback=jQuery112")

for urls in response.json():
    print(urlparse(url["link_url"]).path.rsplit('/', 1)[-1])


2 commentaires

Je ne pense pas que c'est un fichier JSON approprié depuis sa présentation, aucun objet JSON n'a pu être décodé ne fonctionne également pas avec JSON Embellir. Mais quand essayez javascript embellir, il fonctionne


Devez-vous transmettre ce "callback" param? Avez-vous essayé d'appeler l'API sans cela? Parfois, cela indique à l'API d'essayer de retourner une réponse JSONP plutôt que de renvoyer des données JSON brutes. Juste une spéculation :) Cela expliquerait également pourquoi l'embellissement JavaScript fonctionne (JSONP renvoie JavASCIPT).



0
votes
urls=""" "link_url":"http://www.example.com/link1?site=web","mobile_link_url":"http://m.example.com/episode/link1?site=web" link_url":"http://www.example.com/link2?site=web","mobile_link_url":"http://m.example.com/episode/link2?site=web" """

p = [i.split('":')[1] for i in urls.replace(' ', ",").split(",")[1:-1]]


#### Output  ####
['"http://www.example.com/link1?site=web"',
 '"http://m.example.com/episode/link1?site=web"',
 '"http://www.example.com/link2?site=web"',
 '"http://m.example.com/episode/link2?site=web"']
*Not as efficient as regex.

0 commentaires