2015-02-24 2 views
0

Эй, ребята, они делают Python Webcrawler на моменте. Итак, у меня есть ссылка, в которой последние символы: «search? Q =», после чего я использую мой список слов, который я загрузил ранее в список. Но когда я пытаюсь открыть это с помощью: urllib2.urlopen (url), он бросает мне ошибку (ошибка urlopen не указана хозяином). Но когда я открываю эту ссылку с urllib обычно (так, печатая слово, которое обычно автоматически вставлено), он просто отлично работает. Так вы можете сказать мне, почему это происходит?URLOpen Ошибка при объединении URL-адреса со словом из списка слов

Спасибо и привет

Полная ошибка:

File "C:/Users/David/PycharmProjects/GetAppResults/main.py", line 61, in <module> 
 
    getResults() 
 
    File "C:/Users/David/PycharmProjects/GetAppResults/main.py", line 40, in getResults 
 
    usock = urllib2.urlopen(url) 
 
    File "C:\Python27\lib\urllib2.py", line 127, in urlopen 
 
    return _opener.open(url, data, timeout) 
 
    File "C:\Python27\lib\urllib2.py", line 402, in open 
 
    req = meth(req) 
 
    File "C:\Python27\lib\urllib2.py", line 1113, in do_request_ 
 
    raise URLError('no host given') 
 
urllib2.URLError: <urlopen error no host given>

Код:

with open(filePath, "r") as ins: 
 
    wordList = [] 
 
    for line in ins: 
 
     wordList.append(line) 
 

 
def getResults(): 
 
packageID = "" 
 
count = 0 
 
word = "Test" 
 
for x in wordList: 
 
    word = x; 
 
    print word 
 
    url = 'http://www.example.com/search?q=' + word 
 
    usock = urllib2.urlopen(url) 
 
    page_source = usock.read() 
 
    usock.close() 
 
    print page_source 
 
    startSequence = "data-docid=\"" 
 
    endSequence = "\"" 
 
    while page_source.find(startSequence) != -1: 
 
     start = page_source.find(startSequence) + len(startSequence) 
 
     end = page_source.find(endSequence, start) 
 
     print str(start); 
 
     print str(end); 
 
     link = page_source[start:end] 
 
     print link 
 
     if link: 
 
      if not link in packageID: 
 
       packageID += link + "\r\n" 
 
       print packageID 
 
     page_source = page_source[end + len(endSequence):] 
 
count+=1

Так что, когда я напечатать строку слово выводит правильное слово из словника

+1

Нам нужно увидеть ваш код, в противном случае мы сможем угадать, что вызывает эту проблему. –

+1

... и полная ошибка. –

ответ

-1

Note that urlopen() returns a response, not a request.

Вы можете иметь сломанную конфигурацию прокси-сервер; убедитесь, что ваши прокси работают:

или выносной поддержка прокси вообще с:

url = urllib.request.urlopen(
    "http://www.example.com/search?q="+text_to_check 
    proxies={}) 

Sample путь к комбинируя URL со словом из словника. Он объединяет слова списка, чтобы получить изображения с URL-адреса и загружает их. Обведите его вокруг, чтобы получить доступ ко всему списку, который у вас есть.

import urllib 
import re 
print "The URL crawler starts.." 

mylist =["http://www.ebay","https://www.npmjs.org/"] 
wordlist = [".com","asss"] 

x = 1 
urlcontent = urllib.urlopen(mylist[0]+wordlist[0]).read() 
imgUrls = re.findall('img .*?src="(.*?)"',urlcontent) 

for imgUrl in imgUrls: 
    img = imgUrl 
    print img 
    urllib.urlretrieve(img,str(x)+".jpg") 
    x= x + 1 

Надеюсь, что это поможет, иначе разместите свой код и журналы ошибок.

+0

Im, использующий urllib2, и там нет функции с именем getproxies –

+0

напечатайте ваш URL-адрес, прежде чем передать его urlib2. Используйте urlencode вместо конкатенации строк –

0

Я решил проблему. Я просто использую теперь urrlib вместо urllib2, и все работает отлично, спасибо вам всем :)

+0

Пожалуйста, прочтите http://stackoverflow.com/help/answering –