对于相同的方法,结果不同

时间:2015-08-14 20:21:05

标签: python html parsing web-scraping beautifulsoup

我正在尝试从一个网页上抓取并解析一些数据。问题是经过多次尝试后,脚本的行为会有所不同。

import mLib
import requests
import urlparse

URL = 'http://www.distrelec.sk/'

class base():

    def __init__(self):
        self.soup = mLib.getSoup(URL)

    def get_info(self,url):

        soup = mLib.getSoup(url)
        up_left_table_outer = soup.find('table',class_='validate-checkbox-group')

        for row_outer in up_left_table_outer.find_all('tr'):
            key_value = row_outer.find_all('td')
            key = key_value[0].label.text
            value = key_value[1].span.text
            yield key,value


bs = base()
for i in range(1,20):
    print dict(bs.get_info('http://www.distrelec.sk/sk/socket-mm-cerna-multi-contact-lb4-black/p/11034944?q=*&filter_Buyable=1&filter_Category3=Laborat%C3%B3rne+konektory&page=1&origPageSize=10&simi=99.8'))

这是输出的一部分(每行应该是相同的)。如您所见,关键联系人B和联系人A有时会有所不同。问题可能是网页上有多行文字:

{u'Barva': u'\u010cern\xe1', u'Jmenovit\xe9 nap\u011bt\xed': u'30 VAC 60 VDC, 20 A', u'Contact A': u'Z\xe1suvka', u'Velikost': u'\xf8 4 mm', u'Contact B': u'M6'}
{u'Barva': u'\u010cern\xe1', u'Jmenovit\xe9 nap\u011bt\xed': u'30 VAC 60 VDC, 20 A', u'Contact A': u'\xf8 4 mm', u'Velikost': u'\xf8 4 mm', u'Contact B': u'P\xe1jen\xed'}
{u'Barva': u'\u010cern\xe1', u'Jmenovit\xe9 nap\u011bt\xed': u'30 VAC 60 VDC, 20 A', u'Contact A': u'Z\xe1suvka', u'Velikost': u'\xf8 4 mm', u'Contact B': u'M6'}
{u'Barva': u'\u010cern\xe1', u'Jmenovit\xe9 nap\u011bt\xed': u'30 VAC 60 VDC, 20 A', u'Contact A': u'\xf8 4 mm', u'Velikost': u'\xf8 4 mm', u'Contact B': u'M6'}
{u'Barva': u'\u010cern\xe1', u'Jmenovit\xe9 nap\u011bt\xed': u'30 VAC 60 VDC, 20 A', u'Contact A': u'Z\xe1suvka', u'Velikost': u'\xf8 4 mm', u'Contact B': u'M6'}
{u'Barva': u'\u010cern\xe1', u'Jmenovit\xe9 nap\u011bt\xed': u'30 VAC 60 VDC, 20 A', u'Contact A': u'Z\xe1suvka', u'Velikost': u'\xf8 4 mm', u'Contact B': u'M6'}
{u'Barva': u'\u010cern\xe1', u'Jmenovit\xe9 nap\u011bt\xed': u'30 VAC 60 VDC, 20 A', u'Contact A': u'\xf8 4 mm', u'Velikost': u'\xf8 4 mm', u'Contact B': u'P\xe1jen\xed'}
{u'Barva': u'\u010cern\xe1', u'Jmenovit\xe9 nap\u011bt\xed': u'30 VAC 60 VDC, 20 A', u'Contact A': u'\xf8 4 mm', u'Velikost': u'\xf8 4 mm', u'Contact B': u'M6'}

你知道问题出在哪里吗?

1 个答案:

答案 0 :(得分:1)

网址的内容正在发生变化。 Try refreshing it a few times

比较一下:

<code>Zásuvka</code> and <code>Pájení</code> are first

有了这个:

<code>ø 4 mm</code> and <code>M6</code> are first

每个联系人都会独立更改,因此在这种情况下有四种不同的组合。