Как извлечь данные с веб-страницы с помощью python

может кто-нибудь указать мне, что я делаю неправильно?

Введите имя элемента: Rockfish Traceback (последний последний вызов): Файл "C:\Users\partn_000\Desktop\sarvesh\Python Source Code\working\jellyneoscraper.py", строка 45, в поиске (br, ITEMNAME) Файл "C :\Users\partn_000\Desktop\sarvesh\Python Source Code\working\jellyneoscraper.py", строка 33, в поиске приращение = приращение[0] IndexError: индекс списка вне допустимого диапазона

Это код, который я написал

#Library Imports
import mechanize
import cookielib
import re
import sys
import time
import os.path
from operator import itemgetter
import ctypes
ctypes.windll.kernel32.SetConsoleTitleA("test")


def init_browser():
    br = mechanize.Browser()
    br.set_handle_equiv(True)
    br.set_handle_redirect(True)
    br.set_handle_referer(True)
    br.set_handle_robots(False)
    br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
    br.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36')]
    cj = cookielib.LWPCookieJar()
    br.set_cookiejar(cj)

    return br


def search(br, ITEMNAME):
    datapage = br.open('http://items.jellyneo.net/index.php?go=show_items&name=' +ITEMNAME +'&name_type=exact&desc=&cat=0&specialcat=0&status=0&rarity=0&sortby=name&numitems=20')
    f = open('search.html', 'w')
    f.write(datapage.read())
    f.close()
    value = re.findall('style="font-weight:bold;">(.+) NP</a></td>"',datapage.read())  #(.+) is replaced in place of required value
    value = value[0].replace(",","")
    value = int(value)
    print value
#http://items.jellyneo.net/index.php?go=show_items&name=Rockfish&name_type=exact&desc=&cat=0&specialcat=0&status=0&rarity=0&sortby=name&numitems=20


#('style="font-weight:bold;"> (.+) NP</a>"',search.read())


ITEMNAME = raw_input('Enter Item name:eg. Rockfish')

br = init_browser()
search(br, ITEMNAME)

person Sarvesh EB    schedule 06.09.2015    source источник


Ответы (1)


в вашем методе поиска вы читаете всю страницу и сохраняете ее в файл, затем пытаетесь перечитать ее, выполняя свое регулярное выражение, но вы уже находитесь в конце страницы, поэтому она возвращает пустую строку. вы должны добавить datapage.seek(0) перед повторным чтением, например:

datapage = br.open('http://items.jellyneo.net/index.php?go=show_items&name=' +ITEMNAME +'&name_type=exact&desc=&cat=0&specialcat=0&status=0&rarity=0&sortby=name&numitems=20')
f = open('search.html', 'w')
f.write(datapage.read())
f.close()
datapage.seek(0)
value = re.findall('style="font-weight:bold;">(.+) NP</a></td>"',datapage.read())  #(.+) is replaced in place of required value
value = value[0].replace(",","")
value = int(value)
person DorElias    schedule 06.09.2015