Я экспериментирую с механизацией и снова нахожу сайты, которые соответствуют списку розничных магазинов.
Я анализировал результаты поиска Bing, чтобы получить URL-адрес верхнего результата. К сожалению, казалось бы, независимый от запроса, в случайное время я получаю ошибку httplib.IncompleteRead. Несмотря на то, что у меня есть обходной путь, который следует, я хотел бы понять, что происходит.
def bingSearch(query): #query is the store's name, i.e. "Bob's Pet Shop"
while True:
try:
bingBrowser.open('http://www.bing.com/search?q="' + query.replace(' ','+') + '"' )
htmlCode = bingBrowser.response().read()
break
except httplib.IncompleteRead:
#Sleep for a little while and try again.
Другая важная информация:
- Иногда для одного URL-адреса bing программа пытается несколько раз открыть и прочитать этот URL-адрес перед успешным чтением без ошибки IncompleteRead.
- Атрибут заголовков bingBrowser настроен так, чтобы выглядеть красиво.
- Атрибут robots bingBrowser имеет значение false.
- httplib: неполное чтение ... Я ничего не знаю об Apache, поэтому не смог понять ответ на вопрос, но он может быть полезен для вас. Тем не менее, я сомневаюсь, что у меня похожая проблема (почему bing.com страдает от ошибки Apache?!)
Edit:
- Заменен query.replace ('', '+') + '"') на urllib.urlencode (dict (q = query)) в соответствии с предложением Дж.Ф. Себастьяна - без изменений (я знаю, что это не было предложено как решение ).
- Пострадал от необъяснимого urllib2.URLError на bingBrowser.open ('http://www.bing.com/search?q="' + query.replace (' ',' + ') +' "')
- Получена ошибка xlwt "Строка длиннее 65535 символов" - вероятно, не связана.
Заранее спасибо.