爬虫的步骤如下:
1.获取数据
2.筛选数据
3.保存数据
4.显示数据
在这里我们主要使用urllib2库来对网页进行爬取,本次我们爬取的参考网站是:
http://www.jokeji.cn/jokehtml/ymww/2017091320204399.htm
我们可以观察内容:
发现正文的内容都在<span id="text110"></span>这个标签内,所以我们可以通过正则筛选出内容
正则内容如下:
pattern = re.compile(r'<span.*?id="text110">(.*?)</span>',re.S)
然后再将其中的<p></p><br>等标签替换掉
item = item.replace("<P>","").replace("</P>","").replace("<BR>","")
代码如下:
# -*- encoding:utf-8 -*-
import urllib2
import re
class Spider:
"""
笑话大全爬虫类
http://www.jokeji.cn/jokehtml/ymww/2017091320204399.htm
"""
def loadPage(self,page):
"""
@brief 定义一个url请求网页的方法
@param page 需要请求的第几页
@returns 返回的页面html
:param page:
:return:
"""
url = "http://www.jokeji.cn/jokehtml/ymww/2017091320204399.htm"
headers = {"User-Agent":"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT6.1; Trident/5.0"}
req = urllib2.Request(url,headers = headers)
resp = urllib2.urlopen(req)
html = resp.read()
gbk_html = html.decode('gbk').encode('utf-8')
# print(gbk_html)
# 找到内容 <span id="text110"></span>
# re.S 如果没有re.S 则是只匹配一行有没有符合规则的字符串,如果没有则下一行重新匹配
# 如果加上re.S 则是将所有的字符串将一个整体进行匹配
pattern = re.compile(r'<span.*?id="text110">(.*?)</span>',re.S)
item_list = pattern.findall(gbk_html)
return item_list
def printOnePage(self,item_list):
print("******打印爬虫获取到的数据******")
for item in item_list:
item = item.replace("<P>","").replace("</P>","").replace("<BR>","")
print("="*20)
print(item)
if __name__ == '__main__':
"""
爬虫
"""
# 创建一个对象
mySpider = Spider()
item_list = mySpider.loadPage(1)
mySpider.printOnePage(item_list)
运行结果如下: