Python:美丽的归来行李袋

2024-09-30 16:25:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python为manga主机Batoto构建一个基本的数据爬虫程序。出于某些原因,URL有时起作用,有时不起作用。例如:

from bs4 import BeautifulSoup
from urllib2 import urlopen

x= urlopen(*manga url here*)
y = BeautifulSoup(x)

print y

结果应该是页面的标签汤,但我得到了一个大墙这个

^{pr2}$

包装在html和正文标记中。在

有时我会继续尝试,但它是如此的不一致,我不知道它的原因。在

任何帮助都将不胜感激。在


Tags: 数据fromimport程序urlhere原因urllib2
2条回答

urlopen似乎存在编码问题,requests工作正常:

x = requests.get("http://bato.to/comic/_/comics/rakudai-kishi-no-eiyuutan-r11615")
y = BeautifulSoup(x.content)    
print y


<!DOCTYPE html>
<html lang="en" xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<meta charset="utf-8"/>
<title>Rakudai Kishi no Eiyuutan - Scanlations - Comic - Comic Directory - Batoto -    Batoto</title>
.................

使用urlopen可以得到以下结果:

^{pr2}$

因此,正如您所见,这是urlopen而不是{}的问题。在

服务器正在返回gzip字节。因此,要使用urllib2下载内容:

import sys
import urllib2
import gzip
import io
url = "http://bato.to/comic/_/comics/rakudai-kishi-no-eiyuutan-r11615"
response = urllib2.urlopen(url)

# print(response.headers)
content = response.read()
if response.headers['Content-Encoding'] == 'gzip':
    g = gzip.GzipFile(fileobj=io.BytesIO(content))
    content = g.read()

encoding = response.info().getparam('charset')
content = content.decode(encoding)

这将检查内容是否与requests返回的page.text相同:

^{pr2}$

{{3>强烈建议使用cd3}和更强大的处理能力。在

相关问题 更多 >