博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python爬取糗事百科
阅读量:7072 次
发布时间:2019-06-28

本文共 1844 字,大约阅读时间需要 6 分钟。

闲来无事,找点段子一乐呵,就逛到糗事百科,这次爬取没有什么难度,唯一值得说道的是增加了一点点的代码健壮性。

import requestsfrom lxml import etreeclass Spider():    def __get_page(self,url,headers):        try:            response = requests.get(url,headers=headers)            if response.status_code == 200:                return response.text            else:                return None        except Exception:            return None    def __parse_page(self,html):        results = []        data = etree.HTML(html)        items = data.xpath('//div[@id="content-left"]/div')        for item in items:            #获取作者            author = item.xpath('./div[1]/a[2]/h2/text()')            if author:                results.append(author[0].strip())            else:                results.append('匿名用户')            #获取内容            content = item.xpath('./a[1]/div/span/text()')            if content:                results.append(''.join(content).replace('\n',''))            else:                results.append('此用户没有内容')            #获取好笑数            number = item.xpath('./div[2]/span[1]/i/text()')            if number:                results.append(number[0])            else:                results.append('0')        return results    def __save_to_txt(self,data):        with open('data.txt','w',encoding='utf-8') as f:            f.write(data)    def run(self):        for i in range(1,13):            url ='https://www.qiushibaike.com/text/page/' + str(i)            headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64)'                                     ' AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'                       }            html = self.get_page(url,headers)            result = self.parse_page(html)            self.save_to_txt(str(result))#实例化类spider = Spider()spider.run()
  • 其中类里的方法是私有方法,外部不可调用。
  • 解析网页部分增加了判断获取字段为空的处理方法。
  • 欢迎大家跟我交流学习。

转载地址:http://sbell.baihongyu.com/

你可能感兴趣的文章
mysql索引总结
查看>>
散列表-----散列函数
查看>>
python中对文件的操作
查看>>
微信 JS-SDK 配置
查看>>
小程序开发:用原生还是选框架(wepy/mpvue/uni-app/taro)?
查看>>
国际化的vue-i18n
查看>>
git备忘录
查看>>
集群,负载,分布式,微服务区别及概念问题
查看>>
图标任意改变颜色
查看>>
2016 实习招聘面试经历 - 3
查看>>
A View of Cloud Computing
查看>>
@XmlRootElement的配置
查看>>
git使用指南
查看>>
条形码设计软件BarTender实用教程——模板对象常见问题解答
查看>>
公司“内鬼”成信息泄露源头
查看>>
网络编程函数socket源码分析
查看>>
springboot结合全局异常处理之登录注册验证
查看>>
微服务那么火,我也该用微服务吗?
查看>>
PHP的就业前景怎么样?PHP小白应该怎么学习?
查看>>
MobPush集成心得
查看>>