웹 크롤러 - 프로젝트 전투 (Wikipedia 기사의 모든 망신 크롤링)

프로젝트 분석

첫째, 우리 크롤링 사이트에 대한 준비를 우선으로해야 망신 위키 백과 URL (http://www.qiushibaike.com/), 우리는, 우리가 크롤링 내용에 법을 찾을 기사의 소스 코드를 볼 수 있습니다, 여기 내 추출물 코드의 일부

<div class="content">
<span>
儿子三岁的时候,经常跟着奶奶,奶奶开了个养鸡场,养了三四千只鸡,孩子每天最高兴的就是跟奶奶进鸡房捡鸡蛋,拾进那个大木头箱子,拉出来,再装进蛋托里装箱。<br/><br/>有天奶奶正在那装蛋托呢,儿子在跟前玩,一个没立稳,一屁股坐在了装鸡蛋的大木箱子里,把满满的一箱子鸡蛋坐出了个大坑,吓的哇哇哭起来了,奶奶都没舍得训他。而是自己把剩下好的鸡蛋挨个都擦了装箱,把还能吃的坏一点的鸡蛋都留下来自个吃。<br/><br/>晚上吃饭的时候,他叔叔和爷爷看着饭桌上炒的一大盘鸡蛋,都说婆婆开眼了,舍得炒这么多鸡蛋,儿子在一边悠悠得说:“叔叔,
…
</span>
<span class="contentForAll">查看全文</span>
</div>

<a href="/article/122710686" target="_blank" class="contentHerf" onclick="_hmt.push(['_trackEvent','web-list-content','chick'])">
<div class="content">
<span>
单位安排我们一些管理人员先上班!<br/>这天领导突然检查工作,要求必须佩戴好口 罩去迎接!<br/>当时我在整理文件,着急忙慌的刚摘掉的口罩居然找不到了,情急之下,我抓起美女同事桌子上的一包口 罩就往外跑!<br/>在离领导们还有20米左右的时候,我赶紧拿出口罩准备戴上,拿出来才发现,是卫 生 巾!<br/>哎哟哟,众目奎奎一下,我这个脸呀!
</span>
</div>

위의 프런트 엔드 스타일 아래의 코드와 결합, 우리는 모든 기사는 <DIV 클래스 = "내용"> 사이에 있다는 결론을 내릴 수있다 </ DIV>, 일부 학생들은 왜 안입니다 요청할 수 있습니다 <SPAN> 태그 내부 이 같은 <스팬 클래스 = "contentForAll">보기 전체 텍스트 </ SPAN> 상기와 간섭의 범위 내의 일부 콘텐츠는 등 때문에
그림 삽입 설명 여기
둘째, 인터페이스에서 열린 보면, 우리는 이것이의 페이지의 많은 것을 볼 수 있습니다 우리는 모든 콘텐츠를 크롤링 할 경우, 우리는 또한 우리가 페이지를 설정하는 방법을 분석 할 필요가있는 페이지를 설정해야합니다.
두 번째 페이지 URL : HTTPS : //www.qiushibaike.com/hot/page/2/
세 번째 페이지의 URL : HTTPS : //www.qiushibaike.com/hot/page/3/
네 번째 페이지의 URL : HTTPS : / /www.qiushibaike.com/hot/page/4/
그래서 모두가 올바른 법 찾을 것입니다
그림 삽입 설명 여기
내게 조금 점프, 매우 명확하게, 그것은 코드를 볼 것이라고 말했다 경우, 코드가 이해가 안 볼 수 있습니다, 셋째 이전 기사 Urlib 모듈 소개

#创建一个用户代理池数组
uapools=[
    "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",#360
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36",#谷歌
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0",
    "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.5",
    "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0",
]
#定义一个方法UA()
def UA():
    #创建一个urllib.request.build_opener()对象
    opener = urllib.request.build_opener()
    #每次从uapools中随机选取一个User-Agent
    thisua = random.choice(uapools)
    #以JSON格式(键值对)保存一个User-Agent
    ua = ("User-Agent",thisua)
    #将User-Agent赋值给opener.addheaders
    opener.addheaders=[ua]
    #将urllib.request的install_opener改成咱们的
    urllib.request.install_opener(opener)
    print("当前使用User-Agent:"+str(thisua))

sum = 0
for i in range(0,13):
    #从第一页便利到第十三页
    url = "https://www.qiushibaike.com/hot/page/"+ str(i+1) +"/"
    UA()
    #这回就可以快乐的爬取网站内容啦
    data = urllib.request.urlopen(url).read().decode("utf-8","ignore")
    string = '<div class="content">.*?<span>(.*?)</span>.*?</div>'
    res = re.compile(string,re.S).findall(data)
    for j in range(0,len(res)):
        print(res[j])
        print("-------------本页第" + str(j) + "条------------")
        sum = sum + 1
print("共有"+ str(sum) +"条文章")

그것의 운영 결과를 봐 : 그것은 망신 백과 사전으로 2020년 2월 7일 총 261 기사 보인다
그림 삽입 설명 여기
이해하지 않았거나 내가 당신을 감사합니다, 섹션 지적 코멘트에 오신 것을 환영합니다, 잘못된 장소가있다!
그림 삽입 설명 여기

출시 구 개 원래 기사 · 원 찬양 59 · 전망 8271

추천

출처blog.csdn.net/xiaozhezhe0470/article/details/104211131