404 Ошибка на urllib2.urlopen () - PullRequest
       10

404 Ошибка на urllib2.urlopen ()

0 голосов
/ 10 августа 2011

Я пытаюсь очистить сайт с помощью urllib2. Однако я получаю ошибку 400 Page not found. Вот мой код:

rec_text = 'Genesis 1:1'
my_text = rec_text.strip()
book = my_text.split()[0]
chapter_verse = my_text.split()[1]
chapter = chapter_verse.split(':')[0]
verse = chapter_verse.split(':')[1]
webpage = urllib2.urlopen('http://bible.cc/'+book+'/'+chapter+'-'+verse+'.htm').read()
stuffToSearch = ""
for line in webpage:
    stuffToSearch += line
search_for = re.compile(r'<a href="http://kingjbible.com/'+book+'/'+chapter+'.htm">King James Bible</a></span><br>(.*)<p><span class="versiontext"><a href="http://kjv.us/'+book+'/'+chapter+'.htm">')
search_it = re.search(search_for, stuffToSearch)
print(search_it.group(1))

Ответы [ 2 ]

1 голос
/ 10 августа 2011

Глядя на сайт bible.cc, кажется, что капитализация имеет значение.Вам нужно genesis, а не Genesis, которое вы можете получить, изменив строку на book = my_text.split()[0].lower().

Редактировать : Остальное на самом деле не относится к ошибке, но есть и другие советы.

Вы можете немного упростить свой код, используя множественное присваивание, когда у вас есть два или более значений, выводимых из одной операции.объединить список строк вместе без использования цикла for.Используйте join, где вызывающая его строка будет использоваться в качестве разделителя между элементами списка (в основном противоположность split).

stuffToSearch = "".join(webpage)

Я думаю, что нет ничего плохого в поиске страницы,хотя я думаю, что readlines будет немного более эффективным, чем read.То же самое с регулярным выражением;вам не нужно компилировать его, если вы используете его только один раз.Вы, вероятно, могли бы легко придумать выражение, не зависящее от книги и главы, которое можно использовать многократно.

0 голосов
/ 10 августа 2011

Процесс правильный, просто созданный URL может быть неправильным.

Почему бы вам не присвоить 'http://bible.cc/'+book+'/'+chapter+'-'+verse+'.htm' эту переменную и распечатать ее перед отправкой на urlopen?

Таким образом, вы можете проверить, правильно ли сформирован URL.

...