이 기사의 내용은 Python 크롤러를 사용하여 귀중한 블로그 게시물을 얻는 방법입니다. 이제 도움이 필요한 친구들이 이 기사의 내용을 참조할 수 있습니다.
저자 CDA Data Analyst
CSDN에는 훌륭한 기술 블로그 기사가 많이 있습니다. 이를 크롤링하여 로컬 디스크에 저장할 수 있습니다. 이는 나중에 읽고 학습하는 데 매우 편리합니다. 이 목적을 달성하기 위한 코드입니다.
우리가 원하는 것: 블로그 기사를 자동으로 읽고, 제목을 기록하고, 좋아하는 기사를 향후 학습 참고를 위해 개인용 컴퓨터 하드 드라이브에 저장합니다.
프로세스는 대략 다음 단계로 나뉩니다.
1. 크롤링된 대상 URL을 찾습니다. 2. 웹페이지를 분석하고 우리가 저장하고 싶은 정보는 주로 블로그 기사의 내용을 저장합니다.
3. 크롤링된 정보를 정리하고 로컬 디스크에 저장합니다.
csdn 웹 페이지를 엽니다. 예를 들어 무작위로 웹 페이지를 엽니다:
http://blog.csdn.net/u013088062/article/list/1.
블로거가 "C++ Convolutional Neural Network"와 머신러닝에 관한 다른 글을 잘 쓴 것을 볼 수 있습니다.
크롤러 코드는 아이디어에 따라 세 가지 범주(클래스)로 구분됩니다. "#"이 있는 다음 세 가지는 각 클래스의 시작을 나타냅니다(모든 사람이 실제로 실행하고 구현할 수 있도록 특정 코드가 첨부되어 있습니다):
"클래스" 접근 방식은 Python의 객체 지향 프로그래밍으로, 때로는 우리가 일반적으로 사용하는 프로세스 지향 프로그래밍보다 더 편리합니다. 프로그래밍은 대규모 프로젝트에서 자주 사용됩니다. 초보자에게는 객체지향 프로그래밍을 익히기가 쉽지 않지만 배우고 익숙해지면 점차 프로세스지향에서 객체지향 프로그래밍으로 전환하게 됩니다.
RePage 클래스는 주로 정규식을 사용하여 웹 페이지에서 얻은 정보를 처리한다는 점에 유의하세요. 정규식은 문자열 스타일을 다음과 같이 설정합니다.
정규식을 사용하여 크롤링하려는 콘텐츠를 일치시키세요. 이는 Python 및 기타 소프트웨어 도구를 사용하여 달성할 수 있습니다. 정규식에는 많은 규칙이 있으며 각 소프트웨어는 이를 유사한 방식으로 사용합니다. 정규식을 잘 활용하는 것은 크롤러와 텍스트 마이닝의 중요한 부분입니다.
SaveText 클래스는 정보를 로컬에 저장하며 그 효과는 다음과 같습니다.
크롤러 코드를 Python으로 작성하면 간단하고 효율적입니다. 이 기사에서는 크롤러의 가장 기본적인 사용법만 설명합니다. 관심 있는 친구는 코드를 다운로드하여 살펴보시기 바랍니다.
첨부된 것은 관련 Python 코드입니다:
<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> 1</span><span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#-*-coding:UTF-8-*-</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> 2</span><span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">import</span> re<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> 3</span><span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">import</span> urllib2<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> 4</span><span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">import</span> sys <br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> 5</span><span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#목적 : 블로그 기사 읽기, 제목 기록, Htnl 형식으로 기사 내용 저장 </span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> 6</span><span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);"># 버전: python2.7.13</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> 7</span><span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);"># 기능: 웹 페이지 내용 읽기 </span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> 8</span><span style="font-size:inherit;color:inherit;line-height:inherit;"><span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">class</span> <span style="font-size:inherit;line-height:inherit;color:rgb(239,239,143);"> GetHtmlPage</span><span style="font-size:inherit;color:inherit;line-height:inherit;">()</span>:</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> 9</span> #노트 케이스 <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);"></span><br>10<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> ~ > urllib2.Request(self. | header(</span>"사용자 에이전트"<span style="font-size:inherit;color:inherit;line-height:inherit;"> ,<span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">"Mozilla/5.0(Windows NT 6.1; WOW64) AppleWebKit/537.36(Gecko와 같은 KHTML) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0"</span> )<span style="font-size:inherit;line-height:inherit;color:rgb(239,239,143);"><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">16</span> > ~ <span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">"utf-8"</span>) > ~ | > 원하는 콘텐츠<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">30</span><span style="font-size:inherit;color:inherit;line-height:inherit;"><span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">class</span> <span style="font-size:inherit;line-height:inherit;color:rgb(239,239,143);">RePage</span><span style="font-size:inherit;color:inherit;line-height:inherit;">()</span>:</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">31</span><span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#정규식은 콘텐츠를 추출하고 연결된 목록을 반환합니다. </span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">32</span> <span style="font-size:inherit;color:inherit;line-height:inherit;"><span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">def</span> <span style="font-size:inherit;line-height:inherit;color:rgb(239,239,143);">GetReT ext </span><span style="font-size:inherit;color:inherit;line-height:inherit;">(셀프,페이지,리코딩 ) </span>:</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">33</span> rePage = re.findall(recode,page,re.S)<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">34</span> <span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);"></span><br>class<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> </span>SaveText<span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);"></span> ()<br>:<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"></span><span style="font-size:inherit;color:inherit;line-height:inherit;">37<span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);"> </span> <span style="font-size:inherit;line-height:inherit;color:rgb(239,239,143);">def</span> <span style="font-size:inherit;color:inherit;line-height:inherit;">저장 </span></span>(self,text,tilte)<br>:<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"></span><span style="font-size:inherit;color:inherit;line-height:inherit;">38<span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);"> t=</span>"blog\"<span style="font-size:inherit;line-height:inherit;color:rgb(239,239,143);">+tilte+</span> ".html"<span style="font-size:inherit;color:inherit;line-height:inherit;"></span></span>40<br> 43 <span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> </span>제외<span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);"> IOError,e :</span><br>44<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> <span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">46</span> s = SaveText()<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">47</span> <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#파일 인코딩</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">48</span> <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#문자가 올바르게 디코딩됨</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">49</span> reload(sys)<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">50</span> sys.setdefaultencoding( <span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);">"utf-8" </span> ) <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#시스템 기본 인코딩 가져오기</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">51</span> <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#웹페이지 가져오기</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">52</span> page = GetHtmlPage(<span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);">"http://blog.csdn.net/u013088062/article/list/1"</span>)<br> <span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> 53</span> htmlPage = page.GetPage()<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">54</span> <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#Extract content</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">55</span> reServer = RePage()<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">56</span> reBlog = reServer.GetReText(htmlPage,<span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);">r'<span class="link_title"> .*?(s. + ?)</span>'</span>) <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#URL 링크 및 제목 가져오기</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">57</span> <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#텍스트를 가져오려면 아래로</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">58</span> <span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">for</span> ref <span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">in</span> reBlog:<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">59</span> pageHeard = <span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);"> " http:/ /blog.csdn.net/"</span> " '<span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">[Top] </span>'<br>, <span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">""</span>) <span style="font-size:inherit;line-height:inherit;color:rgb(140,208,211);">#교체 기능을 사용하여 복잡한 영어 제거 </span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">62</span>tilte=tilte.replace(<span style="font-size:inherit;line-height:inherit;color:rgb(140,208,211);">" rn"</span>,<span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);">""<span style="color:#FF0000;">).lstrip().rstrip()</span><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">63</span> <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#获取正文</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">64</span> htmlPage = GetHtmlPage(strPage)<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">65</span> htmlPageData = htmlPage.GetPage()<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">66</span> reBlogText = reServer.GetReText(htmlPageData,<span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);">'</span></span></span></span></span></span>
(.+?)(.+?)
')<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">67</span> <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#保存文件</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">68</span> <span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">for</span> s1 <span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">in</span> reBlogText:<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">69</span> s1=<span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);">'n'</span>+s1<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">70</span> s.Save(s1,tilte)<br>
')<span style="font-size: 14px;"></span>67<br>
68 for s1 in
reBlogText:69 s1='n'+s1
상关推荐:
위 내용은 Python 크롤러를 사용하여 귀중한 블로그 게시물을 얻는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!