python 爬虫004-使用urllib2与正则表达式扒取糗事百科新鲜页首页帖子

面向过程的方式

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib2
import sys
import re
import os

type = sys.getfilesystemencoding()
if __name__ == ‘__main__‘:
    # 1.访问其中一个网页地址,获取网页源代码
    url = ‘http://www.qiushibaike.com/textnew/‘
    user_agent = ‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36‘
    headers = {‘User-Agent‘: user_agent}
    try:
        req = urllib2.Request(url=url, headers=headers)
        res = urllib2.urlopen(req)
        html = res.read().decode("UTF-8").encode(type)
    except urllib2.HTTPError as e:
        print e
        exit()
    except urllib2.URLError as e:
        print e
        exit()
    # 2.根据抓取到的网页源代码去提取想要的数据,帖子id,帖子内容
    regex_content = re.compile(
        ‘<div class="article block untagged mb15" id=(.*?)>(?:.*?)<div class="content">(.*?)</div>‘,
        re.S)
    items = re.findall(regex_content, html)
    for item in items:
        file_name = item[0].strip(‘\‘‘)
        content = item[1].strip().lstrip(‘<span>‘).rstrip(‘</span>‘).replace(‘\n‘, ‘‘).replace(
            ‘<br/>‘, ‘\n‘)
        # 3.保存抓取的数据到文件中
        path = ‘qiubai‘
        if not os.path.exists(path):
            os.makedirs(path)
        file_path = path + ‘/‘ + file_name + ‘.txt‘
        with open(file_path, ‘w‘) as fp:
            fp.write(content)
            fp.close()

面向对象的方式

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib2
import re
import os
import sys

type = sys.getfilesystemencoding()

class Spider:
    def __init__(self):
        self.url = ‘http://www.qiushibaike.com/textnew/page/%s/?s=4979315‘
        self.user_agent = ‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36‘

    # 获取网页源代码
    def get_page(self, page_index):
        headers = {‘User-Agent‘: self.user_agent}
        try:
            req = urllib2.Request(url=self.url % str(page_index), headers=headers)
            res = urllib2.urlopen(req)
            html = res.read().decode("UTF-8").encode(type)
            return html
        except urllib2.HTTPError as e:
            print e
            exit()
        except urllib2.URLError as e:
            print e
            exit()

    # 分析网页源代码
    def analysis(self, html):
        regex_content = re.compile(
            ‘<div class="article block untagged mb15" id=(.*?)>(?:.*?)<div class="content">(.*?)</div>‘,
            re.S)
        items = re.findall(regex_content, html)
        return items

    # 保存抓取的数据到文件中
    def save(self, items, path):
        if not os.path.exists(path):
            os.makedirs(path)
        for item in items:
            file_name = item[0].strip(‘\‘‘)
            content = item[1].strip().lstrip(‘<span>‘).rstrip(‘</span>‘).replace(‘\n‘, ‘‘).replace(
                ‘<br/>‘, ‘\n‘)
            file_path = path + ‘/‘ + file_name + ‘.txt‘
            with open(file_path, ‘w‘) as fp:
                fp.write(content)
                fp.close()

    # 运行的方法
    def run(self):
        print u‘开始抓取内容...‘
        for i in range(1, 3):
            content = self.get_page(i)
            items = self.analysis(content)
            self.save(items, ‘qiubai‘)
        print u‘内容抓取完毕...‘

if __name__ == ‘__main__‘:
    sp = Spider()
    sp.run()
时间: 2024-10-28 15:39:19

python 爬虫004-使用urllib2与正则表达式扒取糗事百科新鲜页首页帖子的相关文章

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/

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

今天使用python爬虫实现了自动抓取糗事百科的段子,因为糗事百科不需要登录,抓取比较简单.程序每按一次回车输出一条段子,代码参考了 http://cuiqingcai.com/990.html 但该博主的代码似乎有些问题,我自己做了修改,运行成功,下面是代码内容: 1 # -*- coding:utf-8 -*- 2 __author__ = 'Jz' 3 import urllib2 4 import re 5 6 #糗事百科爬虫类 7 class QSBK: 8 #初始化 9 def __

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_

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

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

使用Python爬取糗事百科热门文章

默认情况下取糗事百科热门文章只有35页,每页20条,根据下面代码可以一次性输出所有的文章,也可以选择一次输出一条信息,回车继续.不支持图片内容的显示,显示内容包括作者,热度(觉得好笑的人越多,热度越高),内容.从热度最高开始显示到最低.实现代码如下: #!/usr/bin/python #coding:utf8 """ 爬取糗事百科热门文章 """ import urllib2 import re #模拟浏览器访问,否则无法访问 user_age

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爬虫实战-爬取糗事百科段子

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://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;

Python 网络爬虫 - 抓取糗事百科的段子(最新版)

代码 # -*- coding: cp936 -*- __author__ = "christian chen" import urllib2 import re import threading import time class Tool: def pTitle(self): return re.compile('<title.*?>(.*?)</', re.S) def pContent(self): return re.compile('<div cla