项目实战-百思不得姐页面爬取

完整代码

# coding:utf-8

import requests
from lxml import etree
import xlwt


class budejieData(object):
    """
    初始化变量,创建工作薄,表单,表头
    """
    def __init__(self):
        self.count = 1  # 定义全局变量
        self.f = xlwt.Workbook()  # 创建工作薄
        self.sheet1 = self.f.add_sheet(u'任务列表', cell_overwrite_ok=True)
        self.rowTitle = [u'编号', u'作者', u'段子', u'图片']
        for i in range(0, len(self.rowTitle)):
            self.sheet1.write(0, i, self.rowTitle[i])
        self.f.save('budejie.xlsx')
    """
    页面循环函数
    """
    def getUrl(self):
        for i in range(5):
            url = 'http://www.budejie.com/{}'.format(i+1)
            self.spiderPage(url)

    """
    爬取页面函数
    """
    def spiderPage(self, url):
        if url is None:  # 判断链接是否为空
            return None
        try:
            proxies = {
                'http': 'http://125.46.0.62:53281',  # 代理IP地址防止被封
            }
            user_agent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/' \
                         '51.0.2704.106 Safari/537.36'  # 模拟浏览器访问
            headers = {'User_Agent': user_agent}
            response = requests.get(url, proxies=proxies, headers=headers).text
            select = etree.HTML(response)
            trs = select.xpath('/html/body/div[2]/div/div[2]/div[1]/div[2]/ul/li')  # 提取tr之前的节点集合
            """
            遍历trs 逐条抓取数据
            """
            for tr in trs:
                data = []
                author = tr.xpath('./div[1]/div[2]/a/text()')
                title = tr.xpath('./div[2]/div[1]/a/text()')
                img = tr.xpath('./div[2]/div[2]/a/img/@src')
                author = author[0] if len(author) > 0 else ''
                title = title[0] if len(title) > 0 else ''
                img = img[0] if len(img) > 0 else''
                print author, title, img
                """
                拼成一个集合
                """
                data.append(self.count)  # 插入编号
                data.append(author)  # 插入作者
                data.append(title)  # 插入内容
                data.append(img)  # 插入图片
                self.count += 1  # 增加记录行数
                for i in range(len(data)):
                    self.sheet1.write(data[0], i, data[i])
                self.f.save('budejie.xlsx')

        except Exception, e:
            print '出错', e.message
"""
实例化,执行函数
"""

if '_main_':
    Job = budejieData()
    Job.getUrl()
百思不得姐

问题总结

这次 实战是对寒大佬的套路第三次运用,这次倒是写的挺溜,一个小时搞定。自以为很简单,结果打印不出结果,抱着疑问去睡觉。早上打印链接才发现问题

 for i in range(5):
            url = 'http://www.budejie.com/i'.format(i+1)

打印结果都是

http://www.budejie.com/i

修改

 for i in range(5):
            url = 'http://www.budejie.com/{}'.format(i+1)

正确打印

今天还有发现,除了错误的缩减会导致代码错误。还有未来代码的美观遵从PEP8协议。函数与函数直接空行不要太多。
再次感谢@逆水寒大佬你的套路真好用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,701评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,649评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,037评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,994评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,018评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,796评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,481评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,370评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,868评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,014评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,153评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,832评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,494评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,039评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,437评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,131评论 2 356

推荐阅读更多精彩内容

  • 22个“放牛班”的春天——童喜喜笔下的邹显慧老师 原创作者|童喜喜 好班总是相似的,“放牛班”却各有各的不同.成都...
    阿里杨阅读 549评论 0 5
  • 4.11 阿yan中午趁有时间来到客栈和我们最后一聚。 和客服小姐姐还有小ting一起去超市买菜。小tin...
    星星河呀阅读 307评论 0 5
  • 《为什么常识会撒谎》 作者 史蒂夫•兰兹伯格,美国罗切斯特大学经济学教授。著有《为什么不向美丽征税》、《买房子还是...
    寻世良方Cc_Sandy拎0阅读 375评论 0 3
  • 2018.5.11 心在天地间 姓名:廖彩娥 【签到第5天】 【理想和情怀】 意义(人):做一个内心有光明的人 理...
    天使的百合阅读 106评论 0 0
  • 1.从零开始nodejs系列文章 2.前端资源教程 3.node 中 pipe 详解
    一洼世界阅读 234评论 0 0