Я пытаюсь написать простое программирование для академического проекта с использованием BeautifulSoup и Mechanize в Python. Я пытаюсь получить цены на некоторые продукты от Amazon, потому что я хотел бы проверить различные теории на их моделях ценообразования. Проблема, с которой я сталкиваюсь, заключается в том, что BeautifulSoup случайным образом не берет всю страницу HTML из Mechanize. Я напечатал в текстовый файл время, когда возникает ошибка, и каждый раз, когда страница Mechanize полностью формируется, однако страница BeautifulSoup там только наполовину. Вот мой код:
def process_product_url(product_url):
"""Scrapes and returns all the data in the given product url"""
#Download product_page given product_url
product_page_mech, product_page_bs = get_product_page_mech_bs(product_url)
#Extract Price
price = extract_price(product_page_bs)
return price
def get_product_page_mech_bs(url):
"""Takes a product page url in str and returns the mech page and bs page"""
while True:
mech_page = get_mech_page(url)
bs_page = BeautifulSoup(unicode(mech_page.response().read(), 'latin-1'))
if not test_product_page(bs_page):
log(unicode(bs_page))
log(unicode(mech_page.response().read(), 'latin-1'))
continue
return mech_page, bs_page
def test_product_page(product_page_bs):
"""Takes a BS product page and tests to see if proper"""
if rank_page_bs.findAll('span', attrs={'id' : 'actualPriceValue'}) == []:
return False
else:
return True
def get_mech_page(url):
"""Given a URL, returns Mechanize page object"""
while True:
try:
br = initialize_browser()
br.open(url)
return br
except Exception, e:
print e
print traceback.print_exc()
continue
def initialize_browser():
"""Returns a fully setup mechanize browser instance"""
br = mechanize.Browser()
br.addheaders = [("User-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0.1) Gecko/20100101 Firefox/9.0.1")]
return br
Я загрузил вывод BeautifulSoup и Механизировать вывод этой страницы: http://www.amazon.com/Fujifilm-X-Pro-Digital-Camera-Body/dp/B006UV6YMQ/ref=sr_1_2?s=electronics&ie=UTF8&qid=1328359488&sr=1-2 (я не могу вставить более двух ссылок)
РЕДАКТИРОВАТЬ: Уточнено и расширено