爬虫二:爬取糗事百科段子

 这一次我们利用BeautifulSoup进行网页的解析,方法其实跟前一次的差不多,只是这里我们爬取的是糗事百科,糗事百科有反爬机制,我们需要模拟用户来访问糗事百科网站,也就是加上头部信息headers,其实整体思路与上一篇所写爬虫的思路差不多,拿个速度可以共用。

1、首先我们在打开网页,并在网页空白处右击选择“检查”在弹出的网页里选择"Network"

2、然后按下“F5”刷新一下

3、在刷新后的页面里我们可以看到多条信息,任意选择一条信息点开

4、在点开的页面最后我们可以看到我们需要获得用户信息(一次不行换别的在点击打开,会看到的)

这样头部信息的获取就完成了,对于网页每个部分就要你对网页有一定的了解了。

user_agent就是模拟用户登录时所携带的信息。

Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 这里就是用户登录时所携带的信息。

headers = {‘User-Agent‘:user_agent}  这里就是具体模拟用户访问了,在通过访问以后我们可以请求获得网页源码,然后我们在源码里进行匹配获取我们想要的信息。
 1 # -*- coding: utf-8 -*-
 2
 3 __author__ = ‘Demon‘
 4
 5 import urllib2,re
 6 from bs4 import BeautifulSoup
 7
 8 def getContentorComment(Url):#定义一个函数,用来获取源码
 9     #模拟用户登录,加上headers就是为了攻破反爬
10     user_agent = ‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36‘
11     headers = {‘User-Agent‘:user_agent}
12     req = urllib2.Request(url=Url,headers=headers)#以用户的身份请求获得源码
13     try:#异常处理,一般以5开头的错误都是网络错误
14         response = urllib2.urlopen(req)#打开源码
15         content = response.read()#读取源码
16     except Exception,e:
17         content = None#如果出现错误,就返回没有爬取源码
18     #print content
19     return content
20
21 articleUrl = "http://www.qiushibaike.com/textnew/page/%d"
22 commentUrl = "http://www.qiushibaike.com/article/%s"
23 page = 0
24 while True:#进行个用户输入
25     raw = raw_input("点击enter查看或者点击exit退出,请输入你的选择:")
26     if raw == "exit":
27         break
28     page+=1
29     Url = articleUrl % page
30     print Url
31     articalpage = getContentorComment(Url)
32     articleFloor = 1
33     soupArticle = BeautifulSoup(articalpage,‘html.parser‘)#用BeautifulSoup进行网络解析
34     for string in soupArticle.find_all(attrs="article block untagged mb15"):#对文章编号进行获取
35         commentId = str(string.get(‘id‘)).strip()[11:]#获得文章编号
36         print "\n"#换行
37         #print commentId
38         print articleFloor,".",string.find(attrs="content").get_text().strip()#对文章的进行获取
39         articleFloor+=1
40         commentPage = getContentorComment(commentUrl % commentId)
41         if commentPage is None:
42             continue
43         soupComment = BeautifulSoup(commentPage,‘html.parser‘)
44         commentFloor = 1
45         for comment in soupComment.find_all(attrs="body"):#对文章的评论进行获取
46             print "     ",commentFloor,"楼回复:",comment.get_text()
47             commentFloor+=1

因为我们在设计的时候添加了人性化输入,既用户输入,当我们按下回车键的时候程序开始继续执行:

这是按下enter以后显示的页面网址与页面每条段子:

我们进行了岁恢复内容的爬取,并注上第几次楼(沙发):

只要勤加练习相信我,爬虫对你来说不是问题,爬虫所用的库各种各样,找到一种你喜欢的。

时间: 2024-08-07 04:08:10

爬虫二:爬取糗事百科段子的相关文章

Python爬虫实战-爬取糗事百科段子

1.本文的目的是练习Web爬虫 目标: 1.爬去糗事百科热门段子 2.去除带图片的段子 3.获取段子的发布时间,发布人,段子内容,点赞数. 2.首先我们确定URL为http://www.qiushibaike.com/hot/page/10(可以随便自行选择),先构造看看能否成功 构造代码: 1 # -*- coding:utf-8 -*- 2 import urllib 3 import urllib2 4 import re 5 6 page = 10 7 url = 'http://www

#python爬虫:爬取糗事百科段子

#出处:http://python.jobbole.com/81351/#确定url并抓取页面代码,url自己写一个import urllib,urllib2def getUrl(): page=1 url="http://www.qiushibaike.com/hot/page/"+str(page) try: request=urllib2.Request(url) response=urllib2.urlopen(request) print response.read() ex

Python爬虫爬取糗事百科段子内容

参照网上的教程再做修改,抓取糗事百科段子(去除图片),详情见下面源码: #coding=utf-8#!/usr/bin/pythonimport urllibimport urllib2import reimport threadimport timeimport sys #定义要抓取的网页#url = 'http://www.qiushibaike.com/hot/'#读取要抓取的网页#globalcontent = urllib.urlopen(url).read()#抓取段子内容#new_

python3 爬虫之爬取糗事百科

闲着没事爬个糗事百科的笑话看看 python3中用urllib.request.urlopen()打开糗事百科链接会提示以下错误 http.client.RemoteDisconnected: Remote end closed connection without response 但是打开别的链接就正常,很奇怪不知道为什么,没办法改用第三方模块requests,也可以用urllib3模块,还有一个第三方模块就是bs4(beautifulsoup4) requests模块安装和使用,这里就不说

python爬取糗事百科段子

初步爬取糗事百科第一页段子(发布人,发布内容,好笑数和评论数) 1 #-*-coding:utf-8-*- 2 import urllib 3 import urllib2 4 import re 5 page = 1 6 url ='http://www.qiushibaike.com/hot/page/'+str(page) #第一页URL 7 headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/

爬虫实战 爬取糗事百科

偶然看到了一些项目,有爬取糗事百科的,我去看了下,也没什么难的 首先,先去糗事百科的https://www.qiushibaike.com/text/看一下, 先检查一下网页代码, 就会发现,需要爬取的笑话内容在一个span标签里,而且父标签是class为content的div里,那就很简单了,用select方法,先找到该文件,然获取下来并保存在txt文件里.比较枯燥. 直接贴代码吧 from bs4 import BeautifulSoup import lxml import request

芝麻HTTP:Python爬虫实战之爬取糗事百科段子

首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致之前的代码没法用了,会导致无法输出和CPU占用过高的情况,是因为正则表达式没有匹配到的缘故. 现在,博主已经对程序进行了重新修改,代码亲测可用,包括截图和说明,之前一直在忙所以没有及时更新,望大家海涵! 更新时间:2015/8/2 糗事百科又又又又改版了,博主已经没心再去一次次匹配它了,如果大家遇到长时间运行不出结果也不报错的情况,请大家参考最新的评

Python爬虫-爬取糗事百科段子

闲来无事,学学python爬虫. 在正式学爬虫前,简单学习了下HTML和CSS,了解了网页的基本结构后,更加快速入门. 1.获取糗事百科url http://www.qiushibaike.com/hot/page/2/    末尾2指第2页 2.先抓取HTML页面 import urllib import urllib2 import re page = 2 url = 'http://www.qiushibaike.com/hot/page/' + str(page) #对应第2页的url

Python爬虫实战一之爬取糗事百科段子

参考资料:http://cuiqingcai.com/990.html 1.非面向对象模式 完整代码1: # -*- coding: utf-8 -*-import reimport urllib2import urllibimport threadimport time page = 1url = 'http://www.qiushibaike.com/hot/page/' + str(page)user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5;