PHP 및 Regex가있는 Steam Community Market의 항목 가격을 받으십시오.

StackOverflow https://stackoverflow.com//questions/23055673

  •  23-12-2019
  •  | 
  •  

문제

나는 PHP를 사용하여 증기 커뮤니티 시장 가격을 얻으려고 노력하고 있습니다.나는 URL을 찍습니다 (예 : http://steamcommunity.com/market/listings/730/stattrak%e2%84%a2%20p250%200%7c%20steel%20discruption%20%28factory%20new%29 ) 그리고 나서 file_get_contents()로 콘텐츠를 다운로드합니다.나는 이것을 사용하려고 노력했다 :

function getInnerHTML($string, $tagname, $closetagname) {
    $pattern = "/<$tagname ?.*>(.*)<\/$closetagname>/";
    preg_match($pattern, $string, $matches);
    return $matches[1];
}
.

사용

를 사용합니다
getInnerHTML($str, 'span class="market_listing_price market_listing_price_with_fee"', 'span');
.

file_get_contents로 가질 수있는 것의 예는 다음과 같습니다.

<span class="market_table_value">
    <span class="market_listing_price market_listing_price_with_fee">
        $1.92               </span>
    <span class="market_listing_price market_listing_price_without_fee">
        $1.68               </span>
    <br/>
</span>
.

그러나 아무 것도 반환하지 않습니다.

아무도 아이디어가 있습니까?

도움이 되었습니까?

해결책

JSON을 반환하는 완벽하게 작동하는 통화가있을 때 HTML을 통해 어려운 방법과 regex를 통해이 작업을 수행하려는 이유를 전적으로 확신하지 못합니다. 원래의 답변이 정확하고 op 질문에 직접 응답하지만, 이는 항목의 시장 가치를 훨씬 쉽고 효율적으로 제공합니다.

가져 오기 :

http://steamcommunity.com/kmarket/priceoverview/?currency=3&appid=730&market_hash_name=stattrak%e2%84%_stattrak%e2%84%2%20p250%20%7c%20steel%20discrurlyion%20%28factory%20new%29.

JSON 응답 :

{
  "success": true,
  "lowest_price": "1,43&#8364; ",
  "volume": "562",
  "median_price": "1,60&#8364; "
}
.

응답 정의 :

success : 부울 값, 통화가 성공했거나 뭔가 잘못되었을 경우 또는 스팀 시장 에서이 항목에 대한 목록이 없습니다. .

lowest_price : 통화 기호가있는 문자열 값 [Pre- / AP]가 지정된 쿼리 매개 변수에 따라 밝혀졌습니다. 일부 추가 매개 변수는 아래를 참조하십시오.

volume : 문자열 (?)으로 반환 된 정수 값 (?) - 판매 / 구입 한이 특정 항목의 총 수입니다.

median_price : 통화 기호가있는 문자열 값 [Pre- / AP] 첨가. 항목이 판매 된 평균 가격. 스팀 마켓 플레이스를 참조하십시오 중앙값이 어떻게 계산되는지 더 잘 이해할 수있는 항목 그래프.

쿼리 매개 변수 :

appid : 게임 / 앱의 고유 한 (정적으로 정의 된) 스팀 응용 프로그램 ID, 카운터 스트라이크에 대한 우리의 경우 730 : 전역 공격. 다른 AppID의 목록을 보려면 밸브의 개발 Wiki를 참조하십시오.이 목록은 새로운 앱이 자주 플랫폼에 추가되므로 항상 최신 상태가 될 것입니다.

market_hash_name : 외부 포함으로 쿼리되는 항목의 이름은 사용자 인벤토리에 대해 쿼리 할 때이 이름을 검색 할 수 있지만 다른 API 호출입니다.

currency : 정수 값; 통화 값 및 형식으로 시장 값을 반환합니다. 여기에 너무 많은 세부 사항을 제공 할 수 없으므로이 숫자로 조정하고 놀아야합니다. 일반적으로 나는 USD를 글로벌 가격으로 사용하고 내 자신의 통화 API를 사용하여 다른 통화로 번역 할 수 있도록합니다.

다른 팁

이 작업에 대해 regex를 사용하지 마십시오 ( regex 참조)XHTML 자체 포함 태그를 제외한 열린 태그와 일치 그러나 어딘가에 더 설명 링크가 있습니다.

XPath를 사용하여 미세한 기준에 따라 요소를 선택하려고합니다. php.net 당신이 원하는 노드를 얻을 수 있어야합니다./ P>

$doc = new DOMDocument();
$doc->loadHTMLFile($file);
$xpath = new DOMXpath($doc);

$elements = $xpath->query('//span[@class="market_listing_price market_listing_price_with_fee"]');
.

XPath //span[@class="..."]는 예상되는 클래스 속성의 문서 내의 모든 span 태그를 선택합니다.

CS : Go Market의 NPM을 통해 Node.js 모듈을 만들었습니다. https://www.npmjs.com/package/csgo-market 단 하나만 가져옵니다가격은 현재 추가 할 추가 기능이 있는지 알려주십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top