[{"data":1,"prerenderedAt":516},["ShallowReactive",2],{"project-14794949":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":5,"maker":10,"posted_at":11,"year":12,"points":13,"comments":14,"rank_in_year":15,"shown_in_year":16,"top":17,"tier":18,"category":19,"subcategory":20,"format":21,"keywords":22,"reception":27,"sentiment":28,"stance_mix":29,"scored_comments":34,"aspects":35,"strip":44,"post_text":45,"what":46,"said":62,"maker_in_thread":208,"shape":210,"grid":215,"attempts":478,"same_week":479,"maker_shows":32,"maker_hidden":508,"reader_version":509,"card":510},"14794949","choppingboard.recipes","An API for scraping recipe web pages","title","Show HN: An API for scraping recipe web pages","http:\u002F\u002Fchoppingboard.recipes\u002F","brad0",1500364254,2017,208,105,155,2242,7,"notable","web_saas","recipe scraping api","api",[23,24,25,26],"recipe scraper","recipe api","schema.org recipe","structured recipe data","mixed",-0.087,{"positive":30,"neutral":31,"mixed":32,"critical":33},6,17,1,11,35,{"design":36,"idea":39,"execution":42},{"positive":37,"critical":38},0,5,{"positive":40,"critical":41},3,4,{"positive":40,"critical":43},2,[32,37,37,37,32,37,32,37,32,37,40,37,37,37,37,37,37,37,37,37,37,37,32,40,37,40,40,37,40,32,41,40,38,32,32,38,32,38,40,40],null,{"problem":47,"audience":45,"pricing":45,"motivation":45,"time_to_build":45,"stack":59,"openness":60,"stage":61,"team_size":60},{"value":48,"source":49,"evidence":50},"Turning recipe web pages into structured recipe data","commenter",[51,55],{"id":52,"by":53,"text":54},"14795288","oneeyedpigeon","This really seems to be an exercise in 'structuring recipe data' rather than the ins-and-outs of scraping. Seems like a much-needed task; is there anything approaching a…",{"id":56,"by":57,"text":58},"14795284","Freak_NL","It looks good and seems to work with some arbitrarily picked recipes on the usual large recipe websites, although more obscure links cause some bugs¹. Is the source code on…",[],"unknown","launched",{"praise":63,"objections":83,"requests":123,"questions":149,"alternatives":167},[64,75],{"value":65,"source":49,"evidence":66},"Works on many recipe sites and non-English pages",[67,71],{"id":68,"by":69,"text":70},"14795324","bomdo","Impressively, it also works for languages other than English (albeit having trouble with formatting here and there). Is there a behind-the-scenes somewhere? Is this regex magic…",{"id":72,"by":73,"text":74},"14795736","staticelf","Very impressed, works fine on websites in Swedish even.",{"value":76,"source":49,"evidence":77},"Structured recipe data is needed",[78,79],{"id":56,"by":57,"text":58},{"id":80,"by":81,"text":82},"14795592","borne0","This is sorely needed, so many recipe blogs follow that tired format of 'long diatribe about something moderately health or family related' then the recipe. Cool!",[84,96,104,112],{"value":85,"source":49,"evidence":86},"Fails on some sites with JSON parse errors",[87,91,95],{"id":88,"by":89,"text":90},"14798049","moepstar","Not sure if this is supposed to work, but german recipe site \"chefkoch.de\"[1] gave me a \"Unexpected token in JSON at position 1611\" error. [1]…",{"id":92,"by":93,"text":94},"14796398","zackify","The first recipe I tried gave me an unexpected json error. Seems to only work with a few sites. Cool idea though.",{"id":56,"by":57,"text":58},{"value":97,"source":49,"evidence":98},"Scraping may violate recipe sites' terms and copyright",[99,100],{"id":56,"by":57,"text":58},{"id":101,"by":102,"text":103},"14795573","Dowwie","This falls under the category of unethical scraping",{"value":105,"source":49,"evidence":106},"Ingredient strings lack structured quantity and unit data",[107,108],{"id":52,"by":53,"text":54},{"id":109,"by":110,"text":111},"14795437","blackskad","This standard is not unique to Google. It's part of the Schema.org initiative to add semantics to the web. The full definition is here: http:\u002F\u002Fschema.org\u002FRecipe The biggest…",{"value":113,"source":49,"evidence":114},"Unit conversion and volume-to-weight ambiguity",[115,119],{"id":116,"by":117,"text":118},"14795304","simooooo","MyFitnessPal has the same issue where the quantity values mixed between different units, but also between volume(cup) vs weight(grams). So its a pain in the neck to know how…",{"id":120,"by":121,"text":122},"14795511","JepZ","Well, as surprising as it might sound there seem to be many units in the kitchen which are not so easy to convert. One example: How many milliliters does a table spoon have?…",[124,128,138,145],{"value":125,"source":49,"evidence":126},"Structured ingredients with quantity, unit and preparation",[127],{"id":52,"by":53,"text":54},{"value":129,"source":49,"evidence":130},"Recipe yield and scaling to number of servings",[131,135],{"id":132,"by":133,"text":134},"14795306","ygra","What I'm missing the most in this context is for how many people those ingredients actually are. That's necessary if you want to scale the recipe to fewer or more people.",{"id":136,"by":110,"text":137},"14795458","It's kinda weird that it's not included yet. The schema.org spec has a field 'recipeYield' specifically for this purpose and it's present in the meatball example on the site. It…",{"value":139,"source":49,"evidence":140},"Unit conversion",[141],{"id":142,"by":143,"text":144},"14795429","askvictor","Two things that would be so nice would be easy scaling, and unit conversion (even better if that's automatic)",{"value":146,"source":49,"evidence":147},"Clean up HTML entities in output",[148],{"id":56,"by":57,"text":58},[150,154,159],{"value":151,"source":49,"evidence":152},"Is the source code on GitHub?",[153],{"id":56,"by":57,"text":58},{"value":155,"source":49,"evidence":156},"Does it use bespoke code per site or generic parsing?",[157,158],{"id":56,"by":57,"text":58},{"id":68,"by":69,"text":70},{"value":160,"source":49,"evidence":161},"Is there a standard for recipe data?",[162,163],{"id":52,"by":53,"text":54},{"id":164,"by":165,"text":166},"14795400","Jaruzel","There is a standard of sorts, if you trust Google: https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fdata-types\u002Frecipes",[168,176,187,194,201],{"value":169,"source":49,"evidence":170},"schema.org Recipe markup",[171,175],{"id":172,"by":173,"text":174},"14795692","arthurpaul","http:\u002F\u002Fschema.org\u002FRecipe",{"id":109,"by":110,"text":111},{"value":177,"source":49,"evidence":178},"hRecipe microformat",[179,183],{"id":180,"by":181,"text":182},"14795454","kozhevnikov","Back when microformats were all the rage there was h-recipe http:\u002F\u002Fmicroformats.org\u002Fwiki\u002Fhrecipe",{"id":184,"by":185,"text":186},"14796090","lpasselin","Yes, this one is the most used http:\u002F\u002Fmicroformats.org\u002Fwiki\u002Fh-recipe",{"value":188,"source":49,"evidence":189},"Copy Me That",[190],{"id":191,"by":192,"text":193},"14795688","tinebak","I made a recipe scraper that doesn't look at the structured (schema) data, but instead \"reads\" the whole page to detect the recipe. I found that there are too many recipe sites…",{"value":195,"source":49,"evidence":196},"PantryPlan",[197],{"id":198,"by":199,"text":200},"14797749","madamelic","Check out PantryPlan: https:\u002F\u002Fpantryplan.io. It does exactly that and not just meal-by-meal but entire menus. Disclaimer: I made it. :) Let me know your thoughts.",{"value":202,"source":49,"evidence":203},"Supercook",[204],{"id":205,"by":206,"text":207},"14796443","lprubin","http:\u002F\u002Fwww.supercook.com (Enter ingredients, get recipes)",{"comments":37,"answered":37,"key":209},[],{"commenters":211,"max_depth":212,"maker_replies":37,"first_comment_mins":213,"lifespan_hours":214},72,10,92,53,[216,218,221,224,227,230,233,236,237,240,241,242,243,247,249,252,255,256,259,261,264,267,269,270,271,272,275,278,279,280,282,284,287,290,291,294,297,300,302,305,308,311,312,315,317,320,322,325,327,329,331,334,336,338,340,341,344,347,350,352,356,359,362,365,367,369,372,375,378,380,382,385,388,390,392,395,398,400,403,405,409,412,414,416,419,422,424,427,430,432,436,440,443,444,446,450,454,456,458,462,466,467,470,473,476],[52,37,32,217,53,37],"project\u002Fcritical\u002Fdesign",[219,37,37,220,57,37],"14795303","other\u002Fneutral\u002Fidea",[222,37,37,220,223,37],"14795370","philbarr",[225,37,37,226,110,37],"14795410","other\u002Fneutral\u002Fnone",[228,37,37,226,229,37],"14796420","flashman",[231,37,37,226,232,37],"14797890","benyami",[234,37,37,226,235,37],"14795463","rocannon",[172,37,37,226,173,37],[238,37,37,226,239,37],"14796168","roryisok",[205,37,37,226,206,37],[198,37,37,226,199,37],[116,37,32,217,117,37],[244,37,37,245,246,37],"14795323","commenter\u002Fneutral\u002Fnone","cbcoutinho",[248,37,37,245,57,37],"14795341",[250,37,37,245,251,37],"14795377","Semaphor",[253,37,37,245,254,37],"14796185","unwind",[132,37,32,217,133,37],[257,37,40,258,53,37],"14795337","project\u002Fneutral\u002Fidea",[260,37,37,245,57,37],"14795348",[262,37,37,245,263,37],"14795402","SeanDav",[265,37,37,245,266,37],"14795600","semi-extrinsic",[268,37,37,245,133,37],"14795372",[136,37,32,217,110,37],[164,37,37,226,165,37],[109,37,37,220,110,37],[273,37,37,226,274,37],"14795537","soneil",[276,37,37,226,277,37],"14795552","peteretep",[142,37,40,258,143,37],[120,37,37,245,121,37],[281,37,37,245,57,37],"14795819",[283,37,37,245,143,37],"14800519",[285,37,37,226,286,37],"14795543","svnv",[288,37,37,226,289,37],"14795621","mellum",[180,37,37,226,181,37],[292,37,37,226,293,37],"14795461","patrickdavey",[295,37,37,226,296,37],"14795619","mosselman",[298,37,37,226,299,37],"14795646","enobrev",[301,37,37,226,296,37],"14796871",[303,37,37,226,304,37],"14795671","g4k",[306,37,37,226,307,37],"14795622","tkp",[309,37,37,226,310,37],"14795922","germanier",[191,37,37,226,192,37],[313,37,37,226,314,37],"14795829","agotterer",[316,37,37,226,192,37],"14795842",[318,37,37,226,319,37],"14795859","pjc50",[321,37,37,226,192,37],"14795952",[323,37,37,226,324,37],"14797936","k3oni",[326,37,37,226,192,37],"14798157",[328,37,37,226,319,37],"14799102",[330,37,37,226,192,37],"14799271",[332,37,37,226,333,37],"14795755","cronin101",[335,37,37,226,192,37],"14795795",[337,37,37,220,333,37],"14811222",[339,37,37,226,319,37],"14795880",[184,37,37,226,185,37],[342,37,37,226,343,37],"14796779","rojobuffalo",[345,37,37,226,346,37],"14800333","pdimitar",[348,37,40,349,343,37],"14800609","maker\u002Fneutral\u002Fnone",[351,37,37,226,346,37],"14807177",[353,37,32,354,355,37],"14796781","project\u002Fcritical\u002Fidea","mikepurvis",[357,37,37,226,358,37],"14797330","zaque1213",[360,37,37,226,361,37],"14798682","greglindahl",[363,37,40,258,364,37],"14797881","nkrisc",[366,37,37,245,355,37],"14799246",[368,37,37,245,364,37],"14800677",[370,37,37,220,371,37],"14798623","solatic",[373,37,37,226,374,37],"14798858","irrational",[376,37,40,258,377,37],"14799194","canes123456",[379,37,40,258,355,37],"14799262",[381,37,40,258,377,37],"14800121",[383,37,37,245,384,37],"14802378","setr",[386,37,37,245,387,37],"14803432","drusepth",[389,37,37,245,384,37],"14808777",[391,37,37,245,387,37],"14811832",[393,37,40,258,394,37],"14797167","coherentpony",[396,37,40,258,397,37],"14797169","craptocurrency",[399,32,32,217,57,37],"14795272",[401,32,40,402,53,37],"14795294","project\u002Fneutral\u002Fdesign",[56,43,40,404,57,37],"project\u002Fmixed\u002Fexecution",[406,43,38,407,408,37],"14796816","project\u002Fpositive\u002Fexecution","oelmekki",[410,43,40,411,192,37],"14796969","project\u002Fneutral\u002Fexecution",[413,43,40,411,408,37],"14797007",[415,43,40,411,192,37],"14797077",[417,43,40,411,418,37],"14797569","mmccaff",[420,40,40,411,421,37],"14795743","polm23",[80,41,38,423,81,37],"project\u002Fpositive\u002Fidea",[425,38,37,226,426,37],"14799045","keithasaurus",[428,30,32,354,429,37],"14795356","mstaoru",[88,17,32,431,89,37],"project\u002Fcritical\u002Fexecution",[433,434,37,226,435,37],"14796132",8,"dbot",[437,438,32,354,439,37],"14796434",9,"Shivetya",[441,212,37,226,442,37],"14796971","joshstrange",[68,33,38,407,69,37],[445,33,40,411,429,37],"14795369",[447,448,37,226,449,37],"14796073",12,"pawelkomarnicki",[451,448,37,452,453,37],"14801273","other\u002Fpositive\u002Fdesign","qrv3w",[92,455,32,431,93,37],13,[72,457,38,407,73,37],14,[459,460,38,423,461,37],"14798686",15,"mapster",[463,464,38,423,465,37],"14797678",16,"Cosmopolitan",[101,31,32,354,102,37],[468,31,37,245,469,37],"14795604","icebraining",[471,31,40,258,472,37],"14795731","txmjs",[474,31,37,245,475,37],"14797324","JshWright",[477,31,37,245,192,37],"14797657",[],[480,485,490,495,500,504],{"id":481,"name":482,"points":483,"category":484},"14805265","gamblers-dice",523,"languages",{"id":486,"name":487,"points":488,"category":489},"14771406","Quilt",367,"data",{"id":491,"name":492,"points":493,"category":494},"14799111","Cinc",363,"productivity",{"id":496,"name":497,"points":498,"category":499},"14769317","Python books",150,"learning_science",{"id":501,"name":502,"points":503,"category":499},"14798336","Learn Anything",145,{"id":505,"name":506,"points":507,"category":499},"14763591","Language identification quiz",140,false,"v2",{"id":511,"name":5,"line":6,"ai":508,"cat":19,"year":12,"points":13,"comments":14,"rec":27,"s":512,"top":17,"kw":513,"maker":10,"domain":5,"tier":18,"attempts":37,"strip":514,"url":9,"mix":515,"praise":65,"objection":85,"sub":20},14794949,-0.09,[23,24,25,26],"1000101010300000000000130330314351151533",[30,31,32,33],1794036557390]