Ik krijg een HTTP 500-fout bij gebruik van python urllib2.open

De code is als. De url is mijn blog en ik wil graag mijn blogberichten ophalen en back-uppen. Het gaat goed met mijn andere blogposts, maar geef 500 fouten terug met deze.

usock = urlopen("http://xiaoshuaistudio.ycool.com/post.4606754.html")
htmlSource = usock.read()
usock.close()

Kun je me helpen erachter te komen hoe een HTTP 500-fout kan worden opgelost?

1
500 is een algemene HTTP-fout. Lees de serverlogboeken; dit heeft niets te maken met urllib.
toegevoegd de auteur geoffspear, de bron

3 antwoord

Er is een pagina-inhoud geladen en er is een 500-fout geretourneerd. Maar ik kan zelf niet lezen of de pagina-inhoud relevant is.

Om fouten op deze specifieke pagina of website te voorkomen die u zou kunnen doen ( WAARSCHUWING is dit niet erg mooi)

try:
  response = urlopen(url)
  content = response.read()
except HTTPError, e:
  if e.getcode() == 500:
    content = e.read()
  else:
    raise
2
toegevoegd
De volgende HTML-ontleedlogica mislukt voor de inhoud van content = e.read() . Dus nu denk ik dat er iets mis is met het artikel zelf. Misschien heeft een coderingsfout zoals @lostyzd gesuggereerd dat de server het weet, maar de mens niet. Bedankt voor het advies.
toegevoegd de auteur hbrls, de bron

Ik denk dat er iets mis is met de ycool.com -server, omdat ik deze URL niet met mijn webbrowser kon openen.

http://xiaoshuaistudio.ycool.com/post.4606754.html

Die webserver retourneert altijd statuscode 500 Internal Server Error voor een of andere URL, die 200 OK zou moeten zijn.

Als de functie urlopen alleen de statuscode controleert, retourneert deze die fout (hoewel de server de inhoud van die pagina verzendt).

0
toegevoegd
@lostyzd Ik heb hetzelfde fenomeen waargenomen als jij. De server verzendt volledige inhoud, maar een 500-foutcode. Wat kan dat zijn?
toegevoegd de auteur hbrls, de bron
Ik heb gerapporteerd. Ze reageerden niet. Ik kies ervoor dit bericht over te slaan. Maar ik zal doorgaan met het debuggen van de potentiële coderingsfout. Bedankt.
toegevoegd de auteur hbrls, de bron
@ CédricJulien Het is te wijten aan je ontdekkingsreiziger, ik test op mijn chrome en firefox browser.
toegevoegd de auteur lostyzd, de bron
@hbrlovehaku Ik denk dat je deze bug moet melden aan de dev van de server. Het kan een coderingsfout zijn.
toegevoegd de auteur lostyzd, de bron
mijn browser kan deze pagina perfect openen, terwijl urllib2 dit niet kan, er is een reëel probleem ...
toegevoegd de auteur Cédric Julien, de bron
@lostyzd: Toen ik de dev-hulpmiddelen van Chrome opende zag ik dat de server een HTTP 500-fout verzendt, zelfs als de pagina correct wordt gedownload en weergegeven, verwisselt de server misschien 500 en 200;).
toegevoegd de auteur Cédric Julien, de bron

Bekijk de serverlogboeken op uw webserver. Over het algemeen zullen foutgegevens veilig zijn op de server. Het is geen goed idee om foutlogboeken naar gebruikers te dumpen.

0
toegevoegd
De ycool.com is een blogprovider zoals blogspot.com van Google. Het is dus onmogelijk om de logs te zien. Of zou u een mogelijke reden van de 500-fout kunnen suggereren? Ik ben er zeker van dat er een reden zou moeten zijn, omdat alleen dit bericht de fout retourneert. Misschien is het te lang? Gegevens te groot?
toegevoegd de auteur hbrls, de bron