From 3ee66e961175d2c3b4d4824ded27f068f706125f Mon Sep 17 00:00:00 2001 From: Apex-code Date: Thu, 1 Oct 2020 18:24:31 +0530 Subject: [PATCH 01/10] added passgen --- .../Strong-Pass-Generator/README.md | 23 ++++++++++++++++++ .../Strong-Pass-Generator/passgen.png | Bin 0 -> 15418 bytes .../Strong-Pass-Generator/passgen.py | 13 ++++++++++ 3 files changed, 36 insertions(+) create mode 100644 Scripts/Miscellaneous/Strong-Pass-Generator/README.md create mode 100644 Scripts/Miscellaneous/Strong-Pass-Generator/passgen.png create mode 100644 Scripts/Miscellaneous/Strong-Pass-Generator/passgen.py diff --git a/Scripts/Miscellaneous/Strong-Pass-Generator/README.md b/Scripts/Miscellaneous/Strong-Pass-Generator/README.md new file mode 100644 index 000000000..2f1f7e350 --- /dev/null +++ b/Scripts/Miscellaneous/Strong-Pass-Generator/README.md @@ -0,0 +1,23 @@ +# Strong Password Generator + +Create Strong Password With Python + +### Requirements + +random (built in no need to install) +string (built in no need to install) + +### How to run the script + +*Note* Your System must have [python installed](https://www.python.org/) (python 3). +1. Goto Project Directory +2. Open Terminal/cmd +3. python passgen.py + +### Screenshot/GIF showing the sample use of the script + +Add a jpeg/png/gif file here. + +## *Author* + +Apex-Code \ No newline at end of file diff --git a/Scripts/Miscellaneous/Strong-Pass-Generator/passgen.png b/Scripts/Miscellaneous/Strong-Pass-Generator/passgen.png new file mode 100644 index 0000000000000000000000000000000000000000..2ec18e1292e386a09341ce30e2899f09ca24962a GIT binary patch literal 15418 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 literal 0 HcmV?d00001 diff --git a/Scripts/Miscellaneous/Strong-Pass-Generator/passgen.py b/Scripts/Miscellaneous/Strong-Pass-Generator/passgen.py new file mode 100644 index 000000000..99a0f1df2 --- /dev/null +++ b/Scripts/Miscellaneous/Strong-Pass-Generator/passgen.py @@ -0,0 +1,13 @@ +# importing modules +import random +import string + +def get_random_password_string(length): + password_characters = string.ascii_letters + string.digits + string.punctuation #taking randomg lett digits + + password = "".join(random.choice(password_characters) for i in range(length)) + print("Your Password is:", password) + +passlen = int(input("**Secure Password Generator** \nEnter Password Length (Type in Digit) - ")) #asking user for length + +get_random_password_string(passlen) \ No newline at end of file From 6be080801dc91277b089c8204c171b02586f9abe Mon Sep 17 00:00:00 2001 From: Apex-code Date: Thu, 1 Oct 2020 19:40:02 +0530 Subject: [PATCH 02/10] Added IMDB Scraper --- .../Strong-Pass-Generator/README.md | 23 --------- .../Strong-Pass-Generator/passgen.png | Bin 15418 -> 0 bytes .../Strong-Pass-Generator/passgen.py | 13 ----- Scripts/Web_Scrappers/IMDB-Mass-Scraper/IMDB | 1 + .../Web_Scrappers/IMDB-Mass-Scraper/README.md | 48 ++++++++++++++++++ .../Web_Scrappers/IMDB-Mass-Scraper/imdb.gif | Bin 0 -> 59868 bytes .../IMDB-Mass-Scraper/scrapy.cfg | 11 ++++ 7 files changed, 60 insertions(+), 36 deletions(-) delete mode 100644 Scripts/Miscellaneous/Strong-Pass-Generator/README.md delete mode 100644 Scripts/Miscellaneous/Strong-Pass-Generator/passgen.png delete mode 100644 Scripts/Miscellaneous/Strong-Pass-Generator/passgen.py create mode 160000 Scripts/Web_Scrappers/IMDB-Mass-Scraper/IMDB create mode 100644 Scripts/Web_Scrappers/IMDB-Mass-Scraper/README.md create mode 100644 Scripts/Web_Scrappers/IMDB-Mass-Scraper/imdb.gif create mode 100644 Scripts/Web_Scrappers/IMDB-Mass-Scraper/scrapy.cfg diff --git a/Scripts/Miscellaneous/Strong-Pass-Generator/README.md b/Scripts/Miscellaneous/Strong-Pass-Generator/README.md deleted file mode 100644 index 2f1f7e350..000000000 --- a/Scripts/Miscellaneous/Strong-Pass-Generator/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# Strong Password Generator - -Create Strong Password With Python - -### Requirements - -random (built in no need to install) -string (built in no need to install) - -### How to run the script - -*Note* Your System must have [python installed](https://www.python.org/) (python 3). -1. Goto Project Directory -2. Open Terminal/cmd -3. python passgen.py - -### Screenshot/GIF showing the sample use of the script - -Add a jpeg/png/gif file here. - -## *Author* - -Apex-Code \ No newline at end of file diff --git a/Scripts/Miscellaneous/Strong-Pass-Generator/passgen.png b/Scripts/Miscellaneous/Strong-Pass-Generator/passgen.png deleted file mode 100644 index 2ec18e1292e386a09341ce30e2899f09ca24962a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15418 zcmc(`1#BEa*DYv_nPO&)8Dfr^dCW00j2U8PW@Z>;%rP@l%*@Qp%xtgo{aR_Y?_X)( z)05svGhHoB_pPqJb?e-7PlYMSNg%=F!GnQ;AxTM!DuIDPuzt1;VIe+$X}$W+KM&vz zN)p20OGETNpC@p?BsCnsz!1>?eZj%fGH}4acs8U&g?_qboMnb+q03;0yybljhh4&e zg%U47?c8Z;bTn&i)b?N$#KmLwX%!62ipu%*^vi#mzhM+8!F-`wkOcg&>9?wKve&+X zZK7<4(4q&(LUvvdBk3I0R;p17Y+2l#ED~McF>X*=H`ooGC(r3U*qK@>LOTl0skm*b zCfUI5YEQR+S3i^aFkpuO>%S363^U(TG)Uu@q{;e?!OMY^qVYER{-x%+Rh%YE`^lK7 zE>JSMmfi~`z3^V)W`Oz$lJd$4OS_?vI{91YINJ$yfqrP3<6`%^J38I~JU@}LL%b=> z)G4d*3DF4NbAElMBCzO{Ot_5Ggq;QGU)D1&iSI5tm6h%&;kX?0p0JfhF=!oDag_XX z0}E(sKfeTyUk-4;n4E+k=rJxxvR*$KndnT#Tjfljt-5be!2T?`e_G^~S3(Gpr6|B6`ik&jMET^C z4!_perWt=v0?#HqcKBUNM4*P35XiziULA^`W3tAUl))i;B!NM9u*gWM8E+IMMVebr zX&!?%HTI|O^<1wtMNP`ZF&y@&=sPgpMU?O`cJ^Ti&z{pc;x}n6^KUaQs_klkQJhWim z-^w&~U)lJsPED5fV=@|)K(25w7BZ~cxng8?CT~4Q1y?&{^UHdWVDr$q0AzEME0^MC zA7%JB#zg>*anNhuIGJ;z(yS4d=OEjQt+aQHxmkYFv&?<#t2~)ePw>%wC`fSXO{djIQ_!8ShM3ivkX>puUwXgZo zT%;T7KT_F@nVe-FBU`OL@MV}-=3&9LFDtC%D0;~!ZNi1bQedo~xj<)r5oye0uHq^01xRmgz%5qWuFBhfHfVC` z=QNk2&|Spd$5F1k!Y*ualKG*r;#m9Dli1#Agbau%?PB>07H5xibG}lW*SscPB%jsb z)9}_!QdErY7&X@IxSk&=H*@o2zCR!qZaHSP{dR^hK)Dv7r0=QteSaD?x)8&8Gpp3h zBayi1%gRUq?(P8T0FK)Mg{R_7KnfjxHZ2VDb#;6yQJBOQX~ZVi$e_hN-l=!v6gIu$CEV(5vp?SnYoZ&3A{%W_&RNixmm zes0S@3aYG&7@#^?&H?@_ zljh?<5^IDu5gH;^q{(RLBk%g2krAd7$VgZAy_S8)zFo>1$5t6pP^{0TeJcTnDns)8#Yg?~tcXgPp);Fr)7IjBv{ z_dYTiObBWJQZ&4h3rdm4nvPdh2Qo7K1Sl9B-DGOlijy_Kk#o$nGXsRchqjWA75kF zQU(%j8HcUr4oZ`YR%D>8Licp$?-U(6uv!QOo=#=zdWUzMk-%ds_R$Qj)&+o|CZjFGC-PPIpioX3ru^7S8|fQ2niXd=5h? zWledRTIT8>uM*>a5E^Z1p!uv*fE86b;1fH^OQ=G#MPng1GyWSZ|IGkAEx|4^47h`P zK}vHAi&|3^;3&bd;9O8V?nd@RC}2BQDIyQTS*37&y`uinOSF9!_U9zwR8G(X{|i-v z?D8ZgNnMT*|7&}D%`&CDX&DrErk`q_YG^|hUuI1U{`>nl_ZoZj1DyRZX4hTvnb3Y9 zj%Q^&k%kW4MpDIj+@9?D{be&j3Vl=K8LE4wx|!1p?$mpg@E{7$32t1KXQ&?B!}T;@ zbAuz^T7g2KE6bD}(bV17IhoomQFieKQe9E0J`ID!LGiT{2kjc-LA(}!vBf&{-rW{v zCtV2rnP!JM7X<&h#xeb@uu){!b>7?;VIwH^Htp0FHN7?a2g$=_@9+7h+G!mWedES~ znW+knyLNGEa1&l{2tD<}`9Gb7Z*CnO+MFp9B|#=>J5%$5ZSC#HHc6NZyroU8>7^V} z^Jnr7`z53Fx=1TU{B*&VoN(v7SzaJH zMvSd25>hCrTDpcVh0$ZaTap9jn1Z&@{igpcpMxO@$Bd+ zgoli_EgBC@iKu1`$ih?o3Hz3OEGL-<$Z|8;&eeHWyGt@>M^#p@yt*ghEA+8M6E-Nlh^u zSM>%pEULhtj%zQyJc*A>C#pl?*MVtaOLTSjbv8m5yN9`(@7>H*1%>xV#CWtsn{#Y7 zCyTR{W3ATOT(PW9nr*~RWVae61kdI;E7~eHPNBzYPAT7xLy7IkP2O4kSJRAVwF7=}nsX@3{_PBK&;F5wcbemN5hDud;E4{IM z+I_uX8@h0H^3#aod9;c=29YLlMkG^BegR8H%{!uL09PnPBFSs-_yA&?80T-B+hEXZ z(ZSs7#sa6TBH;RDnf^b1;U4NXPbWQ971q@2pRJEJ6@6djhZp2(80`dHeZvcq6u}_7 zXaN10<^|lK1(z22Td@Khs5Zf2*wGM(_0PkJM3aga^HI_92Zs+>asiS5Ttg6~>Ra|& zN$zuf5JwbJwz^9RjXt}3t+T8PM6%5ilBE}lE{dT_09x+E?WTLkYR{m>sqGtAKG7^v zLaDewhy1AU4EUQq0LvZi`uBeJc~H7-F5A#W-tib>d-3Vwe#|Od(0#Y#5RutX7yvrv z5mr9#Ie9j`o^i~Dk5r{x>Vltz6mLwZJETc4c&T6KHEqXMvM`!!ETrHDf`vH&6B%!{4+nF>2U`sUR3%?B#k9k{7e4C=I zGo9_2C+`p}D5ML@KsfgyGKZ~`w|M(Lhf$t~Vks_2!gsxxHXP{iUea%O!-HK137@xY z%fR(fxh-ZC?i=yiP&Q-h4dO;GW=5T%Az}R33~M+b{&}O*N2GazL!?&@fN@HcTGBGX z$!e}RdDi{U%dw(Y`ZW#_Wm$vRQB;I_`4RGkM6THvAERE4VUqU-vtaXC&Km0b%*-_S z362iE@dUM4jBJ8CwHOls+GY@2gqVaJU%bifK2^%N4s*uRbd@9*F#m}<;1KB=3W@Vt zwf;u=4Txu1ZSPzzp8uA5r?a^3z|;^frHb*@x7X(5)#iGJ{6ZG1W;@hH+g|L|4jT%= z2Ce&u;w;X)s|Hl5V#8jyy`(jS8Krow*y$@eJvUTKs6RAw;$+Nkb zaM@vY!N)OSoZv0v*D-?bH|{XnSfKx|m;AW8!j$=BVT;qdw#F~8KKskaaF-vmi6X0EiPoP-SwHP{XU(is_n7#Y-^cXJulmZCdPn`i{Mj~#qT^-PwBZ-h2Zfz zx-S41`9r#1oUh2S(^3o>zcG;hkfXh>{OLnaT$NKc&(nBCN?27)Kn3Tfa>NQ#2py?1 zEFvLKU6sLVh)p^$w-73YPB++dLL_qj3$5g!M=~tBvFsjJnQDpl!O7k_Lva-B&QDYO zB~za42QoCdQR}vyg=!IZ8gDs}3d^A&8qdctem+J#O6^SZ=vQR8uYNE*GB140)x2fB z(5x#37CW+A6Si{>8dMR)Gztu6eOPrB+u#ykCm(NPznbc9rafazg}i1)kmF`cwcG0G z=+rwMb7A(Sa_5f{=Y^=PP23o;5!y<_kJm2Z2P=$ zN3yss0bfzUStrq5Via1lsP#&0@M=wvx^QEY{l+6a8$_;5V)F#2cV!AO3RyLzAK%pl z!fyQhWD_UzB2P`lT_{_A{@dC>t7R1E=Ld~0TLH8y+%_K3#KaMD^^ad4rAiF48K_52 zk+GIijn^CV^i0uF>=DIL^*v{COVc;Di92J>Ii8iV88Sx0jVarwp%WplAS%W=%pz&> z9?|JFBpq872N(On)i}|!Mwur|=V#Rlo>iNM-;d)fdmppIy`L~qBMI~DV#omnAn;*t z@QTx5;lJ6$4Y4hn`*)4=T=L>Ho&$pHdbjD?dLSoIkcmk^QAxunodCBko-SeQ!bRjB z#tO$cYpD1yy|u3roAg+d6=O%ig^GtUB|Y;Po_Jnk9$VK8a%dE42jMSYn|z1lUIKw?>SLFN(P z-~yi4Hl9n6fuLyj4kY<-Rs)PDEDA|K036ENnDa#qO0T%jl#xnreP@3P4GO66Sb_yk zmwnwk1<`$g`NnFEPxR>0^ zj0;lX#deg|wB<{P66r=V?;%%=j47nM`z6a21NDpZwp=u71$J$QQB*}Bets2MW@0)5 zZ^LDh@7a~&D}z_~#6f&L@f&(T3jLsERD~NwaWi^Wo`!jZ7C(}qJLZ>*i}=}9WLavA z^_DVds3Xv1t2{E`F^LJ{!wJfKT&~*cfMG zWb$%n{iT90E9Xc+6g@Dzmi=0n|N7naY4eB*L7sN@T%b_GuqSiN1%57myJvSMeL$)G z5MP;c=L}_$ng{m7pGLH?dB$ZKPs^Og_-kfk#EA)TWTS7RHlfk|+bGuTOX=@UZl{;r z^Eer<(gnY_{QHkG_ps9{#l!C7&f|q@7^rDhMpQ;zVbiUlqDvo^-Lnm2oGyue{*9sK z(akfxwf9autx5o!qf4&zOj$}A^FUP?b$9sXu7E6P(a&bvit3#5&Or-CG3K>)`J?uD z%@KIbGh4HM2Wa9WHy*P?%hz+Szbv!ou?=p#8#cyIR>7fjYydjE-K-R{jTCT1{KtZT zDCm1x`RN-&CM3P}U;yn08}M0W@s#LEZO?Sc?~iHz3lZK=20F@%bCmV@5wiwe&}sg_ zGnHxQpX4M~@-zFR!sF>m+Ydb?L*PGZ6l~KJED`QsV+G+i;NNjk7Yw+pDrmFkg|N&Q z5B~X&7-KQeslBZe2EJ8xs7uBP2*1fk6ra!!62)IyR(&r z0(n~)+aV*Vg$OHz`6589j(*qD`4uRrkBPO?ohd08m;Tqs)aI#wt>XL#0R))uMiL?0 zAXjq>|60hHkk6BqcTF3|9Hvg3#IKCbi)zD$2X$3r-|wOsO77dke%8(BxQc~+&FMkl z5Psk3uQoGjl5$&TjnW^iP82Cy)a({kyVWh-v?T=n!dmEuASd!RjakTv|eN_6aLnHjq)I{r}h4m(W`e7nVy5dFf8HCaizBI$!o8XI`x1yCE+#}xf4fWBBaSd?L4mR_Wl1g59+W~DaYmFx&=(Lo zG9aM`GHcLq!AhRwcTi?Yva4AUK$?3#nvJotEo;*I8wATzg{FhOo8jegfAjZBlvIG^ zZuIxI0A?`@>5@o_INq;h6THu!_GUHRQ`O+l)AleY#5oH_FmL~-vrM6!Ok0lfwho}O z-1b@)n~4GmKGS&ZNoJ&XJ3N`DgL{GDy$NMV!Z8V%owm8JVu?8jYZtC|my^eLQI?h&tIe5u0mHa+=py9)gxq$3*V>>fPgQ=j1K5#@lp87NL`1~Mh zNc=7*(kI9cfaSfU303`g9348{-7_}8V5`JZm)`5`S%p2Eg6TVl2p;H@hLtztgdza4 zOe6OTgnYVpBlOii*AJd*Rg+Xu^!Va@r04)zYIOJFYIxq*S|#T2RiQdeJfaSpoNm#z zweqdS!V2E-tsAf@Kv(N+&_^MktI_8duga14^ZKUYBSoo@} zKL*p$)wqRgJ?;Ah(v%Z4A+8EPql?;w#j(y)(pi9kUEdm>3>G`8(pH6NU|8UGr9afEZ*S~s7w-Mj6N?eIu~t7;b?_7%D<1$x4{u5aLI*|X zeB+avd^MlLhdWWX0PUvAOR7dG3Yn}sZ~nyxwGyL3t{l*BEJS<2KJcw_!+xyeVCLk5z^q$Tjb|%#FT(!jM=^_H-P1yf7Y9? zJ2&bxEl&gpuqb>yPqas72dDJo5v`yWpzUtBF%pVqwM@w2hLQ)#Nfzx=im%mg;SJ{w7VWSR6tM#L!XhW!73YXEvxKqtB^e zPDb(tuU2gRoJe?SJ@4CLI@>kgXLSU-w{R+RCrvyhc_=BY$AQ1NxWk~j~w~-bt?!;`+>~C})+pfFRrLU$-Xz~+@4%eB3 zhDlQ5C1h@_iyPE8yOpv{1pTu8q8?jFOwC0WdPh%Rins1(%0(mB5&+-GP3^F4$9tU`T$teAXRKBGOD zz6bdKxFGynD*oO>P|p-rMX|mgNkrj8YOS*IucFrBN~LrV8|QTgoqs(juc@lu!*}8r zQRn$#CuGui5Bj{!U_d&!J&Em$4)iL!_pkI+8XNXb>wbac)9DZ~>)_CG@PiJkpCFQn z>-D2(Pp1XT)|d6^4@3p)tGz>xfp69C_64pzaNkKP!;3DB?#@b&M@DxO8lH_i>fbk_ z=!ri(b2p%O>sq~9I=ej(BB8mch%WHbp8sg;s*XoGXX;zH*-`Trjy5vC&J4{7&i7TwBDVo3RC5T`VY3icfCEHK*ee$kN#wm``G z0$jT(vbZ0$?_0Oik9KI90&5SOGfcH8r3J#DuyEkE`$oi-s~ybOdI-6@{VOcXcpNaC zl@Xl~ywkE@;46@YWruhdhx{T?FDU81$a}-Puj|-9LBVoZbF26vow+Gou~6chTX9S} z(4PgDuj=&cLp4*c_)9|aPi@l@%7y=T$${;EEKSs9G3BuccB>R_Xo|XUsvWscNV1S^ z`%%y2I=eU;A5bKjd=Az%+$q43f9V2(VU+YC%Mci{!T>R}UjLZijo!^st>>;m>{}pt z!^hV2Xh9c<2DbQhFbR%xhXBH+@CP~T6xwCF$t$@kB{}Q6P&6*53BLdj==9f0deph{6QGzdp?W8+$W$}o%hVvE{kQVEaBt1ZdSP^zG1D(lZ6L; zj5Y4@>*2eT4}QHy$JFH6=x#tqw%#)HE!h0stM|9ZO zv0s29duDjQ`W4b$R}=!Mggp1SwJt%H8W*KJ9Mboraxr)q>LKFW8ocPL`Dt%5iY=4m z)H=c4K40li`DgO!90EQ9(TuHMNWYT8E}z(plUSHV|FA%#(V{nJa{dNLqF-GnZh?2Y z&`c5kRRc;enx5U5BUTiBClSq1*|;-lY1JOoRHRJFuZ4s(P0&^VvH-*&!K~y5+ucOD zOyLrT{s0_BUkh}TlYX?j3Sez+zIrK9v*#+y+XR&nkFaAH+lV#~c-Wg9V_<5{eK|Su9W(r)&p(Smgq0D%vV$|Vq zpdV+asV@r+l=7i?xGKCnwVUwroS z6T|j?CSp$I3_H+a=%Y33JLzYvsUxLy?VI$hxWfIIWxb*L3Vq&TC*f|I;&{^6%=DSw z{ItAWHTra?JUjh%#o}a2xzM^HC^X=+{8cUu!(SQHg-ciO3O?)z-|vi&`DtSclx!Bf zf*9#8`6nBF4-2eLdHrEzB$sD^e1K~w!rc@29h1NY)8cJXH!9OjZ$ZoUPjll`$(Gif zlX8o5Ib=~+c#4dm)_WH6fE-mybi1m<(Q}akX)fCYlp->0x@NEndzsk zHEO%R>uXJykFtFD85q2>j;*B+0+Jeh^+E^*TETrU{Lnm&Pj52I7?$pXac953KId9_ zol~*F3)@BpQO`g$)a@@Ec$`_0^Yd`!>VhMHfz3lv&s2t3tE(E6O)e#m-A&l0Pt&6> zdy>ehcXj>TsMoD0wTzA+d7CZ`GEH(fxa(|VvChiGecgo=LqqPYpaJtGMpP)&L*Y59 zeji$5Dgo||O15gZ0Mj!nP>emm=V}bE&)@aix8^D<0V^ZpV1Kir{=2n%(Xb5KJSmBW z|0LSy`@QEU!iA(xP%IM=*;F-cVg0JQ90hGGPo?tlewL{ih->F=5AWmGwQtN)2S?w| z#oc&&x3X{)F-<)CG{a|aBZo|ctaZVnWi+v&`aLgg{ZAsX-UB?mN$tPyJt85zc<`su%5x-Pc@cu7~5TVz$gtCyG6E+5~S( z5xf~<)%W5XB_|TjnsYakbMLLR8p{-Khxao*uJ!19f@q|kUjps1MmrG`bnQoMp;YBo z-fY+BGr7kjw~_Ph!a?Q!Pzh}#Py)2x=8u0MxOs&OvbNDDYjLc0YlC3u8eu#oOJl^HJiZ zch>TXYI=a)-qSh$(J7!<^{n${?L;%Z6xp8UOfi~Js3Nt>6A=Q~Jz@;IM5X=Y@-9>z z;-vp}S=6-*CToHuci556WSTVG9Crc}&96{l>@ zI-kwS2J;((S^NTqfY$(J0E1D#A9-DT)5!KNt~m90!aDV~-rmt(X)wnI%^$V0Uz>+3>I97#R_ zsU8TH1y`7n%Z0zqWAWY5X17UlhO6e=K@pZXqcQZASHT>LN%F_c+7N~tJl1TwumQ|` z0pPTEUPDZRak+UX1%+;=XkrbM)F7!HVT7EjpgS_T*k>Zn8dma}ARcnbbTvcSw2O=% zuDyblCQOz*n=(zgZlAJ6FYru=qxfw#E~Fh@5P9kBhHk0ejAA%(lI7vt-}p}d#UtC{ zZ?-=-gg@aLTXAaU+v{_N=!y)w@wAo<==~AVj}B>4jWYM%sK_>)(pqO6jKQZ1R+j2b?6DyQJN2+lr_<@W?vXD85M-d0ZQh7QocQ6S5!XU`?kHswWQmIP~`FN?WkAF8qd?w=X=7=^e|7e98 zhEm5)TjU*tKL7rcyRs(mDSTdm@^gwnQgOumc}w@x1o5VNvy0HqMc{$Y7}b74rH(_4 z16rPI*LylFH*hX#Joj}5FCEolj2&yFlwd_3TL37O1(yXXNgm_-M_Hh-{)5^MP5s2h z&x&Gz%*6*SY#-$>Vf(bAX{pn4#!77_a|hxz|)%xI?1nO zar`01zi9%uw3_=7kxKx2rmZL@b4Z>~zo=kbB1;@P4|~u2Y==%_I9a&{8`^!wI=JZO z@eO5|IzC|Ostq82#4D2{Y`i}>wG%>s{SM%;$Vl>5F6N=7Qlwn#ozGZB-Yan{6yOsf z`QknML-C~(KZ>Pm0b5xerzhYy5-oaE(&9DR#EQ7P-XU^#ua_(#IWe|LuniFdtjpAX zw?0oxGgl4iNz({1Mk9-L*oay{CEyW+NLo34{?y1&yp<%+|K{}rYNWM8lk2>)9MHSY z8;Y*`aNDyOBzmA?YxQMshg!L4+kp8U7Svz|6lO^%ca;hg!o+SDDf``mJ$#g|;m#$1 zc#f^%p{^*aJXnX7R`b}_5rRxa9^Kh>r8(`j>C$xNaAm`>!l(&*NhkOR&&;8wCYWlAX^ z&@X%w`(l~T86)}017ohuC|fTPwV04oZ>R&wypY5E=rYuMZ&E6~y&Wq@#2u}S?ViOc zufKm?XPVv!dOS@B&5zcNTx{qjR#=et)>Iqd>VA8L@aLQ`zI8x;6d_fm>;||Gp3HXZ z>!7BKyF^>!>1eM11U}!fLK))FqAT)L&qUpJellnQ!-45X!d?0bD=%*L&OgGc-5dwxmie$32xze~!%L>Nu|W;BJ17&z2#!PytJln- z^Q`5=#)ENLKIH`S8mQx_KauEPJ-&4j`BzH)w6ipJwzKoT-S09&;W!*KGHql!TI;V& ztLCwJ>Zd~=a*zzv8LnRnI_LY*Gsd0>XX9|%M>E%ISxkXMW*Jj|I{i|qCxG(>3a>c} zjv8Ix>s0*(i$XVn+~3KnY)EuD8J_yl|hcSNdZA~1C-LC`y* zda-r*9x&-xW`*w{tDWTuZb8qCnSb|0r$ctxYA1e;p|taSr$a?q>Yw)bDNT#} z)84DbD=N@X)9q(!A&OEs6*Y8>Y!6UXptjSm?6pEMoJx%!1j9fYze6vx(NkE=H~Y#g z{q8H}nF+0i-#A*cy8tq2|BZpDn1HOcSZT^LUjM&Ea@_vkNshZ70z+{N0Ql8ZWq@)g zq0dJK)A_8BkkCye%yt`~OBDx&^mc!wO1*Cs3O_JZCg<~oLPROBas#F(W9a22K!`C8 z^xNWpG&p6y70D_;qxB7QH6TO~IFx;-5v`l2IAbPj!A(luXmy9YzNS5jmJ>=LG#IA1 z2<4t6Ext%#zZIphp@uq@_#|sz;_7E{N$0#mn^ZT#xMvv>h#fSFT=7c*EqBw<>mDBZ z4q*>j2s9R-O4lS~Y46z*yq!}xyYBl2 z=;S`s6-@-xQ3@y`%*q!uE-9IjKV}({Hjv_v2xoN)y!I%LCvuK_7543>u&&o!IjYd5XNcPO9r z`|i;j#cO`^K5#~vHz$p^_NqE1?^8eD?h{fp-nwrVz-_Kzgkj>LT?U9c(?9~?Ivi%V z|H^bQzg@LHWJDX zZ7E@S*h3dJ>lJqwyHlTiC?V z^W&<{M9F?Wis1vY5WMX0%oen}r0pCZy!EdBcnpO?@B6qriLZ26izj6_r0R%&rd=J? zd+HEdWNGkn_B--1)>&QrTN#3ZgI>}WVc*CHc^xv+T>o~Huh1Js#=F6OiVVxtAbazt zG!8?G;W~UV|0K1%_(>_H!|_tmW&Jju%UkEl-O)@<_Eswv+c~}>reKqoP?2^GPn)S@ z{R3_8qwc$JOaL@oa_#q!gy(|@q(3EDiyPBf+QYXWM<2R)bhC6OnNg=|q?Oz5+CT$;a40ALF0kDX2u@@9E8S7QSRM z4cizX4CK^i<~b4cPr-1VE@HIUYU=(jv$9^r^Y;;YQlW7@3o}HF4BlSvdqd~^xVKJu&hf*Dhcw3NQAqTs16`9%(@F#VzVM+ ztlp$j7p=?Vv-&Mgnw4s#gX_{MPCAVmG}vlQS;B@g;~BVhTuicpII{}p`d3J{w;Lw4 zH5Wz^NXtRf+xxjysX3Aw-ALx7k3^vmlZ5W$WH9^HEq{QNj+3yQtjGo?XIqbJ=| z0bM3`=V)ihcxl;{;%Q$OeZf(5H;HS>@|kBP@b_`WCh9A=0Vp*6%X)MMVFUz8a9xW;cg+2pQ=TMUTzk4dmz z8th*Ix%VZ|X{H^y7}^`fQD7$Sn%w$?c@aUUxCMvR=1M39he5@Ek)8|>A&rfDU^yp< zSi>S44BgKn@kJAd++|L_`5E-h-x@i(AT%*wE)FKhdJ+(=5V8&Vh{>)u$}kBn&WnX)e?xsL-lonE z=)RvRn?pmzt!_a>72Pvh=arJ+XGe0W0{%|sl zVk)Kd%-rqc7JbT5|5j6Nc}=Z*SY-`Sz9sw9`yu{=JblPk?}dk9=Dx-$3;Z){=+E%X z!GVzZj!Fnr)MAjwl29KU7FST;8fShkn_>C%P`J!ei29DhWr~quY_pUt(hR~P;I!J(x7U>#X ztZ>apn=6i{l($?8>(egI>(5TjzspnHQE64>CdeZrNzL(xjOjLNyVJBrWhV*~ixMF^ z57IG%>MHiV?GX~QHl(LVvUi@aMVTnSO2Tw2%7~~qNx(8CC2X>>BI0DNYmjg06vh`4 ze5m-k@E}FU^hlNb(%*k1A;|UxUtDmo^_$8<_wX{>!%tuoI@W6Nig){;s}(xM9nrno z?ligpt5Lmx8-xSXlp)Z-212O@g`>ybpu_TmsD8s8;37#eyKY;|4d01<6Q` zxyi0$U@+^%FBT$v)yo0&Ia=Dyww};<;8Wj*R}b(z7e-=W;uih>er|n&wwJOrTTRC~ zCDd4O7sXSWem~#Q`ECLM_C3~(vIwHK4qSSQnti9H`7yae?JN#d)yrmy6SW>a4JFTW z`jv=v%u|jAFK?HhL+VHM%$%PIp=t6>xYDBe`JiY&cb7|Cbu|4_I4)*Q~}f;%=cI_neJ z+F>`2*@Kc(#LFdL`MSV-5>ag1DQEc23JOj>L8 z+8lMJ^t-E1O8&mHnQ)GR3li4*r}lp2)-icDFmX-zRAGiFOD(4X(!Iy(RoZ`e`I}RF ze98RgqNHU!Gdd5mdWVH~DJLx{ELk0793R{{!Wc*Xqvt_H@lw#9tzOE0KM%^lmEi0T zFkhjzX)NVX8;7Ec)nw@ZCB0i05h|E3(f_=j4Pu@Z9PIfsA?&VdsCj5~M6RkM-N@aS zS1!~G8at2kQSpu^{15nT@ZR7B1G`-Nmq051%Ub_SVeq*h7YwWc`(J7X23FM$HvB&? fQuzP4Mc)VbOdwcy4BwsVzk5rG$%$47>-+y-G65sg diff --git a/Scripts/Miscellaneous/Strong-Pass-Generator/passgen.py b/Scripts/Miscellaneous/Strong-Pass-Generator/passgen.py deleted file mode 100644 index 99a0f1df2..000000000 --- a/Scripts/Miscellaneous/Strong-Pass-Generator/passgen.py +++ /dev/null @@ -1,13 +0,0 @@ -# importing modules -import random -import string - -def get_random_password_string(length): - password_characters = string.ascii_letters + string.digits + string.punctuation #taking randomg lett digits - - password = "".join(random.choice(password_characters) for i in range(length)) - print("Your Password is:", password) - -passlen = int(input("**Secure Password Generator** \nEnter Password Length (Type in Digit) - ")) #asking user for length - -get_random_password_string(passlen) \ No newline at end of file diff --git a/Scripts/Web_Scrappers/IMDB-Mass-Scraper/IMDB b/Scripts/Web_Scrappers/IMDB-Mass-Scraper/IMDB new file mode 160000 index 000000000..017229962 --- /dev/null +++ b/Scripts/Web_Scrappers/IMDB-Mass-Scraper/IMDB @@ -0,0 +1 @@ +Subproject commit 017229962c69eb5ff3de8612b4a4846da47eb130 diff --git a/Scripts/Web_Scrappers/IMDB-Mass-Scraper/README.md b/Scripts/Web_Scrappers/IMDB-Mass-Scraper/README.md new file mode 100644 index 000000000..70530657b --- /dev/null +++ b/Scripts/Web_Scrappers/IMDB-Mass-Scraper/README.md @@ -0,0 +1,48 @@ + +# IMDB Scraper + - Scrap ALL Hollywood Hindi Dubbed Movies + - Saved Results Into DB or CSV + - Fast af +. + +### Prerequisites + +* [Scrapy](https://scrapy.org/)- Python framework for extracting the data. +* [pymongo](https://pymongo.readthedocs.io/en/stable/#)- Module for working with MongoDB + +### Installation + + +```sh +Installing Scrapy +$ pip3 intstall scrapy +``` + + + + + +```sh +Installing pymongo +$ pip3 install pymongo +``` + + + + +# How to run the script + 1. Git clone repo + 2. Goto Project_Directory/IMDB/ + 3. Open Terminal/cmd + 4. scrapy crawl imdb + + if you want output in csv add -o filename.csv to the command. + + +### Screenshot/GIF showing the sample use of the script +![scrapy cmd](imdb.gif) + +Author +---- + +Apex-Code diff --git a/Scripts/Web_Scrappers/IMDB-Mass-Scraper/imdb.gif b/Scripts/Web_Scrappers/IMDB-Mass-Scraper/imdb.gif new file mode 100644 index 0000000000000000000000000000000000000000..5a3a05a11b57cd354dec961c11f2bde9c065a19f GIT binary patch literal 59868 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 literal 0 HcmV?d00001 diff --git a/Scripts/Web_Scrappers/IMDB-Mass-Scraper/scrapy.cfg b/Scripts/Web_Scrappers/IMDB-Mass-Scraper/scrapy.cfg new file mode 100644 index 000000000..043af37d3 --- /dev/null +++ b/Scripts/Web_Scrappers/IMDB-Mass-Scraper/scrapy.cfg @@ -0,0 +1,11 @@ +# Automatically created by: scrapy startproject +# +# For more information about the [deploy] section see: +# https://scrapyd.readthedocs.io/en/latest/deploy.html + +[settings] +default = IMDB.settings + +[deploy] +#url = http://localhost:6800/ +project = IMDB From 57c917a00c30314040883931e70965ce59396797 Mon Sep 17 00:00:00 2001 From: APEX Date: Thu, 1 Oct 2020 19:50:00 +0530 Subject: [PATCH 03/10] Create imdb_spider.py --- .../.IMDB/spiders/imdb_spider.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 Scripts/Web_Scrappers/IMDB-Mass-Scraper/.IMDB/spiders/imdb_spider.py diff --git a/Scripts/Web_Scrappers/IMDB-Mass-Scraper/.IMDB/spiders/imdb_spider.py b/Scripts/Web_Scrappers/IMDB-Mass-Scraper/.IMDB/spiders/imdb_spider.py new file mode 100644 index 000000000..7d94d3e20 --- /dev/null +++ b/Scripts/Web_Scrappers/IMDB-Mass-Scraper/.IMDB/spiders/imdb_spider.py @@ -0,0 +1,36 @@ +import scrapy +from ..items import ImdbItem + +class QuotesSpider(scrapy.Spider): + name = "imdb" + page_number = 2 + start_urls = [ + 'https://www.imdb.com/list/ls061697854' + ] + + def parse(self, response): + items = ImdbItem() + title = response.css('.lister-item-header a::text').extract() + yearReleased = response.css('.text-muted.unbold::text').extract() + rating = response.css('.ipl-rating-star.small .ipl-rating-star__rating::text').extract() + votes = response.css('.text-muted+ span:nth-child(2)::text').extract() + totalGross = response.css('.text-muted .ghost~ .text-muted+ span::text').extract() + imageURL = response.css('#main .loadlate::attr(loadlate)').extract() + genre = response.css('.genre::text').extract() + + + items['title'] = title + items['yearReleased'] = yearReleased + items['rating'] = rating + items['votes'] = votes + items['totalGross'] = totalGross + items['imageURL'] = imageURL + items['genre'] = genre + + yield items + + next_page = 'https://www.imdb.com/list/ls061697854/?page=' + str(QuotesSpider.page_number) + if QuotesSpider.page_number < 32: + QuotesSpider.page_number += 1 + yield response.follow(next_page, callback=self.parse) + From d2512c27ad6805cc4e27691292fca964e1dcd859 Mon Sep 17 00:00:00 2001 From: APEX Date: Thu, 1 Oct 2020 20:04:55 +0530 Subject: [PATCH 04/10] Create items.py --- .../Web_Scrappers/IMDB-Mass-Scraper/items.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Scripts/Web_Scrappers/IMDB-Mass-Scraper/items.py diff --git a/Scripts/Web_Scrappers/IMDB-Mass-Scraper/items.py b/Scripts/Web_Scrappers/IMDB-Mass-Scraper/items.py new file mode 100644 index 000000000..e54fca04d --- /dev/null +++ b/Scripts/Web_Scrappers/IMDB-Mass-Scraper/items.py @@ -0,0 +1,17 @@ +# Define here the models for your scraped items +# +# See documentation in: +# https://docs.scrapy.org/en/latest/topics/items.html + +import scrapy + + +class ImdbItem(scrapy.Item): + # define the fields for your item here like: + title = scrapy.Field() + yearReleased = scrapy.Field() + rating = scrapy.Field() + votes = scrapy.Field() + totalGross = scrapy.Field() + imageURL = scrapy.Field() + genre = scrapy.Field() From 5e8d914cc1745393015a564714c667420dd0006c Mon Sep 17 00:00:00 2001 From: APEX Date: Thu, 1 Oct 2020 20:05:37 +0530 Subject: [PATCH 05/10] Create middlewares.py --- .../IMDB-Mass-Scraper/middlewares.py | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 Scripts/Web_Scrappers/IMDB-Mass-Scraper/middlewares.py diff --git a/Scripts/Web_Scrappers/IMDB-Mass-Scraper/middlewares.py b/Scripts/Web_Scrappers/IMDB-Mass-Scraper/middlewares.py new file mode 100644 index 000000000..921ddd670 --- /dev/null +++ b/Scripts/Web_Scrappers/IMDB-Mass-Scraper/middlewares.py @@ -0,0 +1,103 @@ +# Define here the models for your spider middleware +# +# See documentation in: +# https://docs.scrapy.org/en/latest/topics/spider-middleware.html + +from scrapy import signals + +# useful for handling different item types with a single interface +from itemadapter import is_item, ItemAdapter + + +class ImdbSpiderMiddleware: + # Not all methods need to be defined. If a method is not defined, + # scrapy acts as if the spider middleware does not modify the + # passed objects. + + @classmethod + def from_crawler(cls, crawler): + # This method is used by Scrapy to create your spiders. + s = cls() + crawler.signals.connect(s.spider_opened, signal=signals.spider_opened) + return s + + def process_spider_input(self, response, spider): + # Called for each response that goes through the spider + # middleware and into the spider. + + # Should return None or raise an exception. + return None + + def process_spider_output(self, response, result, spider): + # Called with the results returned from the Spider, after + # it has processed the response. + + # Must return an iterable of Request, or item objects. + for i in result: + yield i + + def process_spider_exception(self, response, exception, spider): + # Called when a spider or process_spider_input() method + # (from other spider middleware) raises an exception. + + # Should return either None or an iterable of Request or item objects. + pass + + def process_start_requests(self, start_requests, spider): + # Called with the start requests of the spider, and works + # similarly to the process_spider_output() method, except + # that it doesn’t have a response associated. + + # Must return only requests (not items). + for r in start_requests: + yield r + + def spider_opened(self, spider): + spider.logger.info('Spider opened: %s' % spider.name) + + +class ImdbDownloaderMiddleware: + # Not all methods need to be defined. If a method is not defined, + # scrapy acts as if the downloader middleware does not modify the + # passed objects. + + @classmethod + def from_crawler(cls, crawler): + # This method is used by Scrapy to create your spiders. + s = cls() + crawler.signals.connect(s.spider_opened, signal=signals.spider_opened) + return s + + def process_request(self, request, spider): + # Called for each request that goes through the downloader + # middleware. + + # Must either: + # - return None: continue processing this request + # - or return a Response object + # - or return a Request object + # - or raise IgnoreRequest: process_exception() methods of + # installed downloader middleware will be called + return None + + def process_response(self, request, response, spider): + # Called with the response returned from the downloader. + + # Must either; + # - return a Response object + # - return a Request object + # - or raise IgnoreRequest + return response + + def process_exception(self, request, exception, spider): + # Called when a download handler or a process_request() + # (from other downloader middleware) raises an exception. + + # Must either: + # - return None: continue processing this exception + # - return a Response object: stops process_exception() chain + # - return a Request object: stops process_exception() chain + pass + + def spider_opened(self, spider): + spider.logger.info('Spider opened: %s' % spider.name) From 5624d3e8542f8950c62bd0a2c27acfa7bf19159a Mon Sep 17 00:00:00 2001 From: APEX Date: Thu, 1 Oct 2020 20:05:58 +0530 Subject: [PATCH 06/10] Create pipelines.py --- .../IMDB-Mass-Scraper/pipelines.py | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 Scripts/Web_Scrappers/IMDB-Mass-Scraper/pipelines.py diff --git a/Scripts/Web_Scrappers/IMDB-Mass-Scraper/pipelines.py b/Scripts/Web_Scrappers/IMDB-Mass-Scraper/pipelines.py new file mode 100644 index 000000000..ad5d33ef9 --- /dev/null +++ b/Scripts/Web_Scrappers/IMDB-Mass-Scraper/pipelines.py @@ -0,0 +1,25 @@ +# Define your item pipelines here +# +# Don't forget to add your pipeline to the ITEM_PIPELINES setting +# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html + + +# useful for handling different item types with a single interface +from itemadapter import ItemAdapter +import pymongo + +class ImdbPipeline: + +# def __init__(self): +# self.conn = pymongo.MongoClient( +# 'localhost', +# 27017 +# ) +# +# db = self.conn['IMDB'] +# self.collection = db['IMDB'] +# +# +# def process_item(self, item, spider): +# self.collection.insert(dict(item)) +# return item From 1bfc0afd27b47d9bd3bf5203ef2680cae572f62a Mon Sep 17 00:00:00 2001 From: APEX Date: Thu, 1 Oct 2020 20:06:17 +0530 Subject: [PATCH 07/10] Create settings.py --- .../IMDB-Mass-Scraper/settings.py | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 Scripts/Web_Scrappers/IMDB-Mass-Scraper/settings.py diff --git a/Scripts/Web_Scrappers/IMDB-Mass-Scraper/settings.py b/Scripts/Web_Scrappers/IMDB-Mass-Scraper/settings.py new file mode 100644 index 000000000..48e13bc59 --- /dev/null +++ b/Scripts/Web_Scrappers/IMDB-Mass-Scraper/settings.py @@ -0,0 +1,88 @@ +# Scrapy settings for IMDB project +# +# For simplicity, this file contains only settings considered important or +# commonly used. You can find more settings consulting the documentation: +# +# https://docs.scrapy.org/en/latest/topics/settings.html +# https://docs.scrapy.org/en/latest/topics/downloader-middleware.html +# https://docs.scrapy.org/en/latest/topics/spider-middleware.html + +BOT_NAME = 'IMDB' + +SPIDER_MODULES = ['IMDB.spiders'] +NEWSPIDER_MODULE = 'IMDB.spiders' + + +# Crawl responsibly by identifying yourself (and your website) on the user-agent +USER_AGENT = 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' + +# Obey robots.txt rules +ROBOTSTXT_OBEY = True + +# Configure maximum concurrent requests performed by Scrapy (default: 16) +#CONCURRENT_REQUESTS = 32 + +# Configure a delay for requests for the same website (default: 0) +# See https://docs.scrapy.org/en/latest/topics/settings.html#download-delay +# See also autothrottle settings and docs +#DOWNLOAD_DELAY = 3 +# The download delay setting will honor only one of: +#CONCURRENT_REQUESTS_PER_DOMAIN = 16 +#CONCURRENT_REQUESTS_PER_IP = 16 + +# Disable cookies (enabled by default) +#COOKIES_ENABLED = False + +# Disable Telnet Console (enabled by default) +#TELNETCONSOLE_ENABLED = False + +# Override the default request headers: +#DEFAULT_REQUEST_HEADERS = { +# 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', +# 'Accept-Language': 'en', +#} + +# Enable or disable spider middlewares +# See https://docs.scrapy.org/en/latest/topics/spider-middleware.html +#SPIDER_MIDDLEWARES = { +# 'IMDB.middlewares.ImdbSpiderMiddleware': 543, +#} + +# Enable or disable downloader middlewares +# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html +#DOWNLOADER_MIDDLEWARES = { +# 'IMDB.middlewares.ImdbDownloaderMiddleware': 543, +#} + +# Enable or disable extensions +# See https://docs.scrapy.org/en/latest/topics/extensions.html +#EXTENSIONS = { +# 'scrapy.extensions.telnet.TelnetConsole': None, +#} + +# Configure item pipelines +# See https://docs.scrapy.org/en/latest/topics/item-pipeline.html +ITEM_PIPELINES = { + 'IMDB.pipelines.ImdbPipeline': 300, +} + +# Enable and configure the AutoThrottle extension (disabled by default) +# See https://docs.scrapy.org/en/latest/topics/autothrottle.html +#AUTOTHROTTLE_ENABLED = True +# The initial download delay +#AUTOTHROTTLE_START_DELAY = 5 +# The maximum download delay to be set in case of high latencies +#AUTOTHROTTLE_MAX_DELAY = 60 +# The average number of requests Scrapy should be sending in parallel to +# each remote server +#AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0 +# Enable showing throttling stats for every response received: +#AUTOTHROTTLE_DEBUG = False + +# Enable and configure HTTP caching (disabled by default) +# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings +#HTTPCACHE_ENABLED = True +#HTTPCACHE_EXPIRATION_SECS = 0 +#HTTPCACHE_DIR = 'httpcache' +#HTTPCACHE_IGNORE_HTTP_CODES = [] +#HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage' From e8e8f1f1b2538495899151c0f2bf84491b40ba7e Mon Sep 17 00:00:00 2001 From: APEX Date: Thu, 1 Oct 2020 20:07:14 +0530 Subject: [PATCH 08/10] Create __init__.py --- .../Web_Scrappers/IMDB-Mass-Scraper/.IMDB/spiders/__init__.py | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 Scripts/Web_Scrappers/IMDB-Mass-Scraper/.IMDB/spiders/__init__.py diff --git a/Scripts/Web_Scrappers/IMDB-Mass-Scraper/.IMDB/spiders/__init__.py b/Scripts/Web_Scrappers/IMDB-Mass-Scraper/.IMDB/spiders/__init__.py new file mode 100644 index 000000000..ebd689ac5 --- /dev/null +++ b/Scripts/Web_Scrappers/IMDB-Mass-Scraper/.IMDB/spiders/__init__.py @@ -0,0 +1,4 @@ +# This package will contain the spiders of your Scrapy project +# +# Please refer to the documentation for information on how to create and manage +# your spiders. From 6e5a39c5af2f300ab1b9bcc02da9721bc7b6b27b Mon Sep 17 00:00:00 2001 From: APEX Date: Thu, 1 Oct 2020 20:07:55 +0530 Subject: [PATCH 09/10] Update README.md --- Scripts/Web_Scrappers/IMDB-Mass-Scraper/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Scripts/Web_Scrappers/IMDB-Mass-Scraper/README.md b/Scripts/Web_Scrappers/IMDB-Mass-Scraper/README.md index 70530657b..19727a3d8 100644 --- a/Scripts/Web_Scrappers/IMDB-Mass-Scraper/README.md +++ b/Scripts/Web_Scrappers/IMDB-Mass-Scraper/README.md @@ -32,7 +32,7 @@ $ pip3 install pymongo # How to run the script 1. Git clone repo - 2. Goto Project_Directory/IMDB/ + 2. Goto Project_Directory/ 3. Open Terminal/cmd 4. scrapy crawl imdb From 13dbf2d206b657ca4766691a7ec0223e3203be3c Mon Sep 17 00:00:00 2001 From: APEX Date: Thu, 1 Oct 2020 23:58:40 +0530 Subject: [PATCH 10/10] Update pipelines.py --- .../IMDB-Mass-Scraper/pipelines.py | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Scripts/Web_Scrappers/IMDB-Mass-Scraper/pipelines.py b/Scripts/Web_Scrappers/IMDB-Mass-Scraper/pipelines.py index ad5d33ef9..272531771 100644 --- a/Scripts/Web_Scrappers/IMDB-Mass-Scraper/pipelines.py +++ b/Scripts/Web_Scrappers/IMDB-Mass-Scraper/pipelines.py @@ -10,16 +10,16 @@ class ImdbPipeline: -# def __init__(self): -# self.conn = pymongo.MongoClient( -# 'localhost', -# 27017 -# ) -# -# db = self.conn['IMDB'] -# self.collection = db['IMDB'] -# -# -# def process_item(self, item, spider): -# self.collection.insert(dict(item)) -# return item + def __init__(self): + self.conn = pymongo.MongoClient( + 'localhost', + 27017 + ) + + db = self.conn['IMDB'] + self.collection = db['IMDB'] + + + def process_item(self, item, spider): + self.collection.insert(dict(item)) + return item