2017-04-15 2 views
0

ich habe den folgenden Link: https://webcache.googleusercontent.com/search?q=cache:jAc7OJyyQboJ: https://cooking.nytimes.com/learn-to-cook + & cd = 5 & hl = en & ct = clnkWeb Scraping - Wie man einen bestimmten Teil eines Weblink bekommen

Ich habe mehrere Links in einem Datensatz. Jede Verbindung hat das gleiche Muster. Ich möchte einen bestimmten Teil des Links erhalten, für den obigen Link wäre ich der fett gedruckte Teil des obigen Links. Ich möchte Text vom 2. http bis vor dem ersten + Zeichen beginnen.

Ich weiß nicht, wie dies mit Regex zu tun ist. Ich arbeite in Python. Bitte hilf mir.

Antwort

0

Wenn jeder Link das gleiche Muster hat, brauchen Sie Regex nicht. Sie verwenden können string.find() und string cutting

link = "https://webcache.googleusercontent.com/search?q=cache:jAc7OJyyQboJ:https://cooking.nytimes.com/learn-to-cook+&cd=5&hl=en&ct=clnk" 

# This finds the second occurrence of "https://" and returns the position 
second_https = link.find("https://", link.find("https://")+1) 
# Index of the end of the link 
end_of_link = link.find("+") 

new_link = link[second_https:end_of_link] 

print(new_link) 

Dies wird „https://cooking.nytimes.com/learn-to-cook“ zurückkehren und wird funktionieren, wenn die Verbindung nach dem gleichen Muster folgt wie beschrieben (es ist die zweite https: // in den Link und endet mit + Zeichen)

0

ich mit urlparse (Python 2) oder urlparse (Python 3) und ein wenig re gex gehen würde:

import re 
from urlparse import urlparse 

url_example = "https://webcache.googleusercontent.com/search?q=cache:jAc7OJyyQboJ:https://cooking.nytimes.com/learn-to-cook+&cd=5&hl=en&ct=clnk" 
parsed = urlparse(url_example) 
result = re.findall('https?.*', parsed.query)[0].split('+')[0] 
print(result) 

Ausgang:

https://cooking.nytimes.com/learn-to-cook