I kēia lā, aia 100500 mau papa ʻEpekema ʻIkepili a ua ʻike lōʻihi ʻia ʻo ka hapa nui o ke kālā ma ka ʻIkepili ʻIkepili hiki ke loaʻa ma o nā papa ʻIke ʻIkepili (no ke aha e ʻeli ai ke kūʻai aku ʻoe i nā koʻi?). ʻO ka hemahema nui o kēia mau papa, ʻaʻohe mea e pili ana i ka hana maoli: ʻaʻohe mea e hāʻawi iā ʻoe i ka ʻikepili maʻemaʻe, hoʻoponopono ʻia i ke ʻano i koi ʻia. A ke haʻalele ʻoe i ka papa a hoʻomaka e hoʻoponopono i kahi pilikia maoli, nui nā nuances e puka mai.
No laila, ke hoʻomaka nei mākou i nā moʻolelo "He aha ka mea e hewa ai me ka ʻIkepili ʻIke", e pili ana i nā hanana maoli i loaʻa iaʻu, koʻu mau hoa a me nā hoahana. E kālele mākou i nā hana ʻepekema Data maʻamau me ka hoʻohana ʻana i nā hiʻohiʻona maoli: pehea e hana maoli ai kēia. E hoʻomaka kākou i kēia lā me ka hana ʻohi ʻikepili.
A ʻo ka mea mua e hina ai ka poʻe i ka wā e hoʻomaka ai lākou e hana me ka ʻikepili maoli ʻo ia ka hōʻiliʻili ʻana i kēia ʻikepili i pili loa iā mākou. ʻO ka ʻōlelo nui o kēia ʻatikala:
Hoʻohaʻahaʻa mākou i ka manawa, nā kumuwaiwai, a me ka hoʻoikaika ʻana e pono ai e hōʻiliʻili, hoʻomaʻemaʻe, a hoʻomākaukau i ka ʻikepili.
A ʻo ka mea nui loa, e kūkākūkā mākou i nā mea e hana ai e pale ai i kēia.
Wahi a nā manaʻo like ʻole, hoʻomaʻemaʻe, hoʻololi, hoʻoili ʻikepili, ʻenehana hiʻohiʻona, a me nā mea ʻē aʻe e lawe i ka 80-90% o ka manawa, a me ka nānā ʻana 10-20%, ʻoiai ʻo nā mea hoʻonaʻauao āpau e kālele wale ana i ka nānā ʻana.
E nānā kākou i kahi pilikia analytical maʻalahi ma nā ʻano ʻekolu ma ke ʻano he laʻana maʻamau a ʻike i ke ʻano o nā "kūlana hoʻonāukiuki".
A ma ke ʻano he laʻana, e noʻonoʻo mākou i nā ʻano like ʻole o ka hana o ka ʻohi ʻana i ka ʻikepili a me ka hoʻohālikelike ʻana i nā kaiāulu no:
ʻElua Reddit subreddits
Elua pauku o Habr
ʻElua mau pūʻulu o Odnoklassniki
Kūlana kūlana ma ke kumumanaʻo
E wehe i ka pūnaewele a heluhelu i nā hiʻohiʻona, inā maopopo, e hoʻokaʻawale i kekahi mau hola no ka heluhelu ʻana, i kekahi mau hola no ke code me ka hoʻohana ʻana i nā hiʻohiʻona a me ka debugging. Hoʻohui i kekahi mau hola no ka hōʻiliʻili. Kiola i loko o kekahi mau hola i hoʻopaʻa ʻia (e hoʻonui i ʻelua a hoʻohui i nā hola N).
Manaʻo Koʻikoʻi: Hoʻokumu ʻia nā kuhi manawa ma nā manaʻo a me nā kuhi e pili ana i ka lōʻihi.
Pono e hoʻomaka i ka nānā ʻana i ka manawa ma ke koho ʻana i nā ʻāpana aʻe no ka pilikia kūlana i wehewehe ʻia ma luna.
He aha ka nui o ka ʻikepili a me ka nui o ia mea e pono e hōʻiliʻili kino ʻia (*e ʻike ma lalo *).
He aha ka manawa hōʻiliʻili no hoʻokahi moʻolelo a pehea ka lōʻihi āu e kali ai ma mua o ka hiki ke ʻohi i ka lua?
E noʻonoʻo e kākau i ke code e mālama ai i ka mokuʻāina a hoʻomaka hou i ka wā (ʻaʻole inā) pau nā mea a pau.
E noʻonoʻo inā pono mākou i ka ʻae a hoʻonohonoho i ka manawa no ka loaʻa ʻana ma o ka API.
E hoʻonoho i ka helu o nā hewa ma ke ʻano he hana o ka paʻakikī ʻikepili - loiloi no kahi hana kikoʻī: ka hoʻolālā, ehia mau hoʻololi, pehea a pehea e unuhi ai.
Hoʻoponopono i nā hewa pūnaewele a me nā pilikia me ka hana papahana maʻamau ʻole.
E noʻonoʻo inā aia nā hana i koi ʻia i loko o ka palapala a inā ʻaʻole, pehea a pehea ka nui e pono ai no kahi workaround.
ʻO ka mea nui loa, ʻo ia ke koho ʻana i ka manawa - pono ʻoe e hoʻolilo i ka manawa a me ka hoʻoikaika ʻana i ka "reconnaissance in force" - a laila lawa kāu hoʻolālā. No laila, no ka nui o kou koi ʻia e ʻōlelo "pehea ka lōʻihi o ka hōʻiliʻili ʻana i ka ʻikepili" - kūʻai iā ʻoe iho i kahi manawa no ka loiloi mua a hoʻopaʻapaʻa i ka nui o ka manawa e hoʻololi ʻia ma muli o nā palena maoli o ka pilikia.
A i kēia manawa e hōʻike mākou i nā hiʻohiʻona kikoʻī kahi e loli ai kēlā mau ʻāpana.
Manaʻo Koʻikoʻi: Hoʻokumu ʻia ka manaʻo hoʻohālikelike i ka nānā ʻana i nā kumu koʻikoʻi e pili ana i ka laulā a me ka paʻakikī o ka hana.
He ala maikaʻi ka manaʻo hoʻohālikelike i ka wā liʻiliʻi nā mea hana a ʻaʻole nui nā kumu e hiki ke hoʻololi nui i ka hoʻolālā ʻana o ka pilikia. Akā i ka hihia o nā pilikia ʻepekema Data, lilo ia mau mea i mea nui loa a ʻaʻole lawa kēlā ʻano hana.
Hoʻohālikelike o nā kaiāulu Reddit
E hoʻomaka kākou me ka hihia maʻalahi (e like me ka mea ma hope). Ma ka laulā, e ʻoiaʻiʻo loa, loaʻa iā mākou kahi hihia kūpono loa, e nānā i kā mākou papa inoa paʻakikī:
Aia kahi API maʻemaʻe, maopopo a palapala.
He mea maʻalahi loa a ʻo ka mea nui loa, loaʻa maʻalahi kahi hōʻailona.
He kaiāulu e kālailai a hōʻiliʻili i ka ʻikepili ma reddit (a hiki i nā wikiō YouTube e wehewehe ana i ka hoʻohana ʻana i ka python wrapper) ʻo kahi laʻana.
Loaʻa nā ala e pono ai mākou i ka API. Eia kekahi, ʻike paʻa a maʻemaʻe ke code, aia ma lalo kahi hiʻohiʻona o kahi hana e hōʻiliʻili i nā manaʻo ma kahi pou.
def get_comments(submission_id):
reddit = Reddit(check_for_updates=False, user_agent=AGENT)
submission = reddit.submission(id=submission_id)
more_comments = submission.comments.replace_more()
if more_comments:
skipped_comments = sum(x.count for x in more_comments)
logger.debug('Skipped %d MoreComments (%d comments)',
len(more_comments), skipped_comments)
return submission.comments.list()
Lawe ʻia mai kēia kahi koho o nā pono kūpono no ka ʻōwili ʻana.
ʻOiai ʻo ia ka hihia maikaʻi loa, pono e noʻonoʻo i kekahi mau mea koʻikoʻi mai ke ola maoli:
Nā palena API - koi ʻia mākou e lawe i ka ʻikepili i nā pūʻulu (moe ma waena o nā noi, etc.).
ʻO ka manawa hōʻiliʻili - no ka loiloi piha a me ka hoʻohālikelike ʻana, pono ʻoe e hoʻokaʻawale i ka manawa nui no ka spider e hele i loko o ka subreddit.
Pono e holo ka bot ma kahi kikowaena—ʻaʻole hiki iā ʻoe ke holo wale ma kāu kamepiula, hoʻokomo i loko o kāu ʻeke, a hele i kāu ʻoihana. No laila holo wau i nā mea āpau ma kahi VPS. Ke hoʻohana nei i ka code promotional habhabr10 hiki iā ʻoe ke mālama i kahi 10% o ke kumukūʻai.
ʻO ka hiki ʻole o ke kino o kekahi mau ʻikepili (ʻike ʻia lākou e nā luna hoʻomalu a paʻakikī paha e hōʻiliʻili) - pono e noʻonoʻo ʻia kēia; ma ke kumu, ʻaʻole hiki ke hōʻiliʻili ʻia nā ʻikepili āpau i ka manawa kūpono.
Nā hewa pūnaewele: He mea ʻeha ka hoʻopaʻa ʻana.
He ʻikepili maoli kēia - ʻaʻole maʻemaʻe.
ʻOiaʻiʻo, pono e hoʻokomo i kēia mau nuances i ka hoʻomohala ʻana. ʻO nā hola/lā kikoʻī e pili ana i ka ʻike hoʻomohala a i ʻole ka ʻike e hana ana i nā hana like, akā naʻe, ʻike mākou aia ka hana maʻemaʻe ʻenehana a ʻaʻole koi i nā neʻe kino hou e hoʻoponopono - hiki ke loiloi maikaʻi ʻia nā mea āpau, hoʻonohonoho ʻia a hana ʻia.
Ka hoohalike ana o na pauku Habr
E neʻe kāua i kahi hihia hoihoi a me ka ʻole o ka hoʻohālikelike ʻana i nā pae a/a i ʻole nā ʻāpana o Habr.
E nānā kāua i kā mākou papa inoa paʻakikī - ma ʻaneʻi, no ka hoʻomaopopo ʻana i kēlā me kēia kikoʻī, pono ʻoe e ʻeli iki i ka hana ponoʻī a hoʻokolohua.
I ka wā mua, manaʻo ʻoe aia kahi API, akā ʻaʻole. ʻAe, ʻae, loaʻa iā Habr kahi API, akā ʻaʻole hiki ke loaʻa i nā mea hoʻohana (a i ʻole ʻaʻole hana ʻole).
A laila hoʻomaka ʻoe i ka parsing html - "nā noi hoʻokomo", he aha ka hewa?
Pehea e paʻi ai? ʻO ke ala maʻalahi a maʻalahi hoʻi i hoʻohana pinepine ʻia ʻo ka hoʻololi ʻana ma luna o nā ID, e hoʻomaopopo ʻaʻole ʻo ia ka mea ʻoi aku ka maikaʻi a pono e mālama i nā hihia like ʻole - eia kahi hiʻohiʻona o ka nui o nā ID maoli i waena o nā mea āpau.
ʻO ka ʻikepili maka i kāʻei ʻia i HTML ma luna o ka pūnaewele he mea ʻeha. No ka laʻana, makemake ʻoe e hōʻiliʻili a mālama i ka helu o kahi ʻatikala: ua haehae ʻoe i ka helu mai ka html a ua hoʻoholo ʻoe e mālama iā ia ma ke ʻano he helu no ka hana hou ʻana:
1) int(score) hoʻolei i kahi hewa: no ka mea, aia ma Habré kahi hapa, e like me ka laʻana, ma ka laina "-5" - he en dash kēia, ʻaʻole kahi hōʻailona hōʻemi (me ka manaʻo ʻole, pololei?), pēlā ma i kekahi manawa pono wau e hoʻāla i ka parser i ke ola me kahi hoʻoponopono weliweli.
ʻAʻohe lā, hoʻohui a me nā mea liʻiliʻi (e like me kā mākou e ʻike ai ma luna o ka hana check_date, ua hana kēia).
2) ʻAʻole i pakele i nā mea kūikawā - e hele mai lākou, pono ʻoe e mākaukau.
3) Hoʻololi ke ʻano ma muli o ke ʻano o ka pou.
4) He ʻano ʻano ʻano ʻano paha nā pou kahiko.
ʻO ka mea nui, pono e mālama ʻia ka hana hewa a me nā mea e hiki mai ana a ʻaʻole hiki iā ʻoe ke wānana maopopo i ka mea e hewa ai a pehea e hiki ai ke kūkulu ʻia a me ka mea e hāʻule i kahi - pono ʻoe e hoʻāʻo a noʻonoʻo. nā hewa i hoʻolei ʻia e ka parser.
A laila ʻike ʻoe pono ʻoe e hoʻokaʻawale i nā kaula he nui, inā ʻaʻole e hoʻopaʻa ʻia i hoʻokahi a laila e 30+ mau hola (ʻo ia ka manawa hoʻokō o kahi parser hoʻokahi-threaded e hana nei, e hiamoe ana a ʻaʻole e hāʻule i lalo o nā pāpā). IN kēia ʻatikala, ua alakaʻi kēia i kekahi manawa i kahi papahana like:
Ka helu helu helu ma ka paʻakikī:
Ke hana nei me ka pūnaewele a me ka html parsing me ka ʻike a me ka huli ʻana ma ka ID.
ʻO ka manawa i manaʻo ʻia no kēia hana he 3-5 mau manawa kiʻekiʻe ma mua o ka hōʻiliʻili ʻana i ka ʻikepili mai Reddit.
Hoʻohālikelike o nā hui Odnoklassniki
E neʻe kākou i ka hihia hoihoi loa i wehewehe ʻia. Noʻu, he mea hoihoi loa ia no ka mea i ka nānā mua ʻana, he mea liʻiliʻi loa ia, akā ʻaʻole ia e like me ke ʻano - i ka wā e paʻi ai ʻoe i kahi lāʻau.
E hoʻomaka me kā mākou papa inoa paʻakikī a e hoʻomaopopo i ka nui o lākou e lilo i ʻoi aku ka paʻakikī ma mua o kā lākou nānā mua ʻana:
Aia kahi API, akā aneane nele i nā hana pono.
No kekahi mau hana pono ʻoe e noi i ke komo ʻana ma ka leka uila, ʻo ia hoʻi, ʻaʻole hikiwawe ka hāʻawi ʻana i ke komo.
Hoʻopaʻa paʻa ʻia (e hoʻomaka me ka hui ʻana o nā huaʻōlelo Lūkini a me ka ʻōlelo Pelekania ma nā wahi āpau, a me ka like ʻole - i kekahi manawa pono ʻoe e koho i ka mea a lākou e makemake ai iā ʻoe ma kahi) a, ʻoi aku, ʻaʻole kūpono ka hoʻolālā no ka loaʻa ʻana o ka ʻikepili, no ka laʻana. , ka hana a mākou e pono ai.
Pono i kahi kau i loko o ka palapala, akā ʻaʻole hoʻohana maoli ia - a ʻaʻohe ala e hoʻomaopopo ai i nā paʻakikī āpau o nā ʻano API ma waho o ka poking a puni a me ka manaʻolana e hana kekahi mea.
ʻAʻohe laʻana a ʻaʻohe kaiāulu; ʻo ke kumu o ke kākoʻo i ka ʻohi ʻana i ka ʻike he mea liʻiliʻi e hoʻopili ma Python (me ka ʻole o nā hiʻohiʻona o ka hoʻohana ʻana).
ʻO Selenium ka mea i hiki ke koho ʻia, no ka mea, ua paʻa ka nui o nā ʻikepili pono.
1) ʻO ia hoʻi, loaʻa ka mana ma o ka mea hoʻohana fictitious (a me ka hoʻopaʻa inoa ʻana ma ka lima).
2) Eia naʻe, me Selenium ʻaʻohe mea hōʻoia no ka hana pololei a hiki ke hana hou ʻia (ma ka liʻiliʻi loa ma ka hihia o ok.ru no ka maopopo).
3) Aia i loko o ka pūnaewele Ok.ru nā hewa JavaScript a i kekahi manawa he ʻano ʻē a ʻano like ʻole.
4) Pono ʻoe e hana i ka pagination, hoʻouka i nā mea, etc.
5) Pono e mālama pono ʻia nā hewa API i hāʻawi ʻia e ka mea wahī, no ka laʻana, e like me kēia (kahi ʻāpana code hoʻokolohua):
def get_comments(args, context, discussions):
pause = 1
if args.extract_comments:
all_comments = set()
#makes sense to keep track of already processed discussions
for discussion in tqdm(discussions):
try:
comments = get_comments_from_discussion_via_api(context, discussion)
except odnoklassniki.api.OdnoklassnikiError as e:
if "NOT_FOUND" in str(e):
comments = set()
else:
print(e)
bp()
pass
all_comments |= comments
time.sleep(pause)
return all_comments
6) ʻO ka hope loa, ua like ʻo Selenium + API i ke koho kūpono loa.
Pono e mālama i ka moku'āina a hoʻomaka hou i ka ʻōnaehana, mālama i nā hewa he nui, me ka ʻano like ʻole o ka pūnaewele - a paʻakikī kēia mau hewa e noʻonoʻo (koe ke kākau ʻoe i nā parsers me ka ʻoihana, ʻoiaʻiʻo).
ʻO ka manaʻo kuhi manawa kūlana no kēia hana he 3-5 mau manawa kiʻekiʻe ma mua o ka hōʻiliʻili ʻana i ka ʻikepili mai Habr. ʻOiai ma ka hihia o Habr ke hoʻohana nei mākou i kahi ala mua me ka parsing HTML, a ma ka hihia o OK hiki iā mākou ke hana me ka API ma nā wahi koʻikoʻi.
haʻina
No ka nui o kou koi ʻana e koho i nā palena manawa "ma kahi" (ke hoʻolālā nei mākou i kēia lā!) ʻO kahi modula pipeline hoʻoponopono data voluminous, ʻaʻole hiki ke hoʻohālikelike ʻia ka manawa hoʻokō me ka ʻole o ka nānā ʻana i nā ʻāpana hana.
Ma kahi moʻolelo noʻonoʻo iki, ʻoi aku ka maikaʻi o nā hoʻolālā agile no nā hana ʻenekinia, akā ʻo nā pilikia i ʻoi aku ka hoʻokolohua a, ma ke ʻano, "creative" a me ka ʻimi ʻana, ʻo ia hoʻi, ʻaʻole hiki ke wānana, loaʻa nā pilikia, e like me nā hiʻohiʻona o nā kumuhana like. a makou i kamailio ai maanei.
ʻOiaʻiʻo, ʻo ka hōʻiliʻili ʻikepili he laʻana nui wale nō - he hana maʻalahi a maʻalahi ʻole ka ʻenehana, a ʻo ka diabolo ka mea i nā kikoʻī. A ma kēia hana e hiki ai iā mākou ke hōʻike i ke ʻano holoʻokoʻa o nā koho i hiki ke hele hewa a pehea ka lōʻihi o ka hana.
Inā ʻoe e nānā i nā hiʻohiʻona o ka hana me ka ʻole o nā hoʻokolohua hou aʻe, a laila ʻano like ʻo Reddit a me OK: aia kahi API, kahi python wrapper, akā ma ke ʻano, nui ka ʻokoʻa. Ma ka hoʻoholo ʻana i kēia mau ʻāpana, ʻoi aku ka paʻakikī o nā pā o Habr ma mua o OK - akā ma ka hoʻomaʻamaʻa ʻana he mea kūʻē loa ia, a ʻo ia ka mea e ʻike ʻia ma ka hana ʻana i nā hoʻokolohua maʻalahi e nānā i nā ʻāpana o ka pilikia.
I koʻu ʻike, ʻo ke ala kūpono loa ʻo ka hoʻohālikelike ʻana i ka manawa āu e pono ai no ka loiloi mua ʻana iā ia iho a me nā hoʻokolohua mua maʻalahi, heluhelu i ka palapala - e ʻae kēia iā ʻoe e hāʻawi i kahi kuhi pololei no ka hana holoʻokoʻa. Ma nā ʻōlelo o ke ʻano agile kaulana, ke noi aku nei au iā ʻoe e hana i kahi tiketi no ka "manaʻo ʻana i nā ʻāpana hana", ma ke kumu e hiki ai iaʻu ke hāʻawi i kahi loiloi i nā mea e hiki ke hoʻokō ʻia i loko o ka "sprint" a hāʻawi i kahi kuhi kūpono no kēlā me kēia. hana.
No laila, ʻo ka hoʻopaʻapaʻa maikaʻi loa e like me ka mea e hōʻike i kahi loea "non-technical" i ka nui o ka manawa a me nā kumuwaiwai e ʻokoʻa ma muli o nā ʻāpana ʻaʻole e loiloi ʻia.