>source

wellrx.com을 웹 스크래핑하고 있습니다. 긁는 각 페이지에 대한 사전을 만들고 해당 페이지를 csv 파일에 추가하려고합니다.

한 페이지에 이름과 가격이 표시되고 링크를 클릭하여 대체 약품 이름/가격으로 이동 한 후 해당 페이지의 이름과 가격을 얻습니다.

예 : 사전은

{ '마약 이름': 'ARIPIPRAZOLE', '가격': '$16.45', '다른 이름': 'ABILIFY', 'price1': '$892.59'}

{ '마약 이름': 'PIOGLITAZONE HCL', '가격': '$9.00', '다른 이름': 'ACTOS', 'price1': '$392.11'}

그러나 나는 얻는다

{ '마약 이름': 'PIOGLITAZONE HCL', '가격': '$9.00', '다른 이름': 'ACTOS', 'price1': '$392.11'}

#get drug name and price 
pages_dict = {}
        try:
            drug_name = driver.find_element_by_xpath('//h4[@class="displayName skel skel-displayName"]').text 
            price = driver.find_element_by_xpath('//p[@class="right pr2"]').text
            pages_dict['drug name'] = drug_name
            pages_dict['price'] = price
            print(pages_dict)
        except:
            continue
#click the alternative name 
        try:    
            name = driver.find_element_by_xpath('//h5[@id="OtherName"]').text
            name1 = re.findall(": (.*)", name)[0]
            driver.find_element_by_link_text(name1).click()
            time.sleep(5)
#other drug name 
            other_name = driver.find_element_by_xpath('//h4[@class="displayName skel skel-displayName"]').text 
            price1 = driver.find_element_by_xpath('//p[@class="right pr2"]').text
            pages_dict['other name'] = other_name
            pages_dict['price1'] = price1
            print(pages_dict)
        except:
            continue

  • 답변 # 1

    항상 같은 키를 다음과 같이 덮어 쓰기 때문에 사전에 대해 먼저 배워야한다고 생각합니다.

    pages_dict['drug name'] = drug_name
    pages_dict['price'] = price
    
    

    그냥 시도해보십시오 :

    pages_dict[drug_name] = drug_name
    pages_dict[price] = price
    
    

    그리고 다른 키가 다른 값으로 저장되는 방법을 볼 수 있습니다.

    모든 약의 가격을 저장하려면 다음과 같이하는 것이 더 합리적입니다 :

    pages_dict[drug_name] = price
    
    

    대신 하나의 인스턴스를 나타내는 고정 키를 가진 동일한 종류의 dict을 원한다면 사전 목록을 만드는 것이 좋습니다.

    list_of_dicts = []
    pages_dict = {}
    # Put a block code who creates page_dict
    list_of dicts.append(pages_dict)
    # Put a block code who creates page_dict
    list_of dicts.append(pages_dict)
    # Put a block code who creates page_dict
    list_of dicts.append(pages_dict)
    for pages in list_of_dicts:
        print(pages)
    
    
    그러나 이것은 구현하기에 좋은 방법은 아닙니다. 페이지를 약간 또는 몇 번 반복해야합니다. 게시 한 코드에는 많은 수정이 필요합니다. 읽을 수 없습니다.

  • 이전 azure iot hub - MAX_OPERATION_TIMEOUT 구성
  • 다음 JavaScript를 사용하여 기본 항목 목록 항목 RadListView를 업데이트하는 방법