Python 制作糗事百科爬虫实例

 更新时间:2016年09月22日 08:41:41   作者:千里追风  
本文是结合前面的三篇关于python制作爬虫的基础文章,给大家分享的一份爬取糗事百科的小段子的源码,有需要的小伙伴可以参考下

早上起来闲来无事做,莫名其妙的就弹出了糗事百科的段子,转念一想既然你送上门来,那我就写个爬虫到你网站上爬一爬吧,一来当做练练手,二来也算找点乐子。

其实这两天也正在接触数据库的内容,可以将爬取下来的数据保存在数据库中,以待以后的利用。好了,废话不多说了,先来看看程序爬取的数据结果

值得一提的是,我在程序中想一下子爬取糗事百科 30 页的内容,但是出现了连接错误,当我把页数降到 20 页的时候,程序就可以正常的跑起来了,不知道是什么原因,渴望知道的大神可以告诉我一声,感激不尽。

程序非常简单,直接上源代码咯

# coding=utf8

import re
import requests
from lxml import etree
from multiprocessing.dummy import Pool as ThreadPool
import sys

reload(sys)
sys.setdefaultencoding('utf-8')


def getnewpage(url, total):
 nowpage = int(re.search('(\d+)', url, re.S).group(1))
 urls = []

 for i in range(nowpage, total + 1):
  link = re.sub('(\d+)', '%s' % i, url, re.S)
  urls.append(link)

 return urls


def spider(url):
 html = requests.get(url)
 selector = etree.HTML(html.text)

 author = selector.xpath('//*[@id="content-left"]/div/div[1]/a[2]/@title')
 content = selector.xpath('//*[@id="content-left"]/div/div[2]/text()')
 vote = selector.xpath('//*[@id="content-left"]/div/div[3]/span/i/text()')

 length = len(author)
 for i in range(0, length):
  f.writelines('作者 : ' + author[i] + '\n')
  f.writelines('内容 :' + str(content[i]).replace('\n','') + '\n')
  f.writelines('支持 : ' + vote[i] + '\n\n')


if __name__ == '__main__':

 f = open('info.txt', 'a')
 url = 'http://www.qiushibaike.com/text/page/1/'
 urls = getnewpage(url, 20)

 pool = ThreadPool(4)
 pool.map(spider,urls)
 f.close()

如果其中有不懂得部分,可以依次参考我的前三篇文章。

相关文章

  • Python 使用csv库处理CSV文件的方法

    Python 使用csv库处理CSV文件的方法

    Python中集成了专用于处理csv文件的库,名为:csv,本文给大家介绍了Python使用csv库处理CSV文件的方法及csv库中4个常用的对象,结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • Python多线程爬虫简单示例

    Python多线程爬虫简单示例

    这篇文章主要为大家详细介绍了Python多线程爬虫简单示例,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • 深入理解Python @dataclass的内部原理

    深入理解Python @dataclass的内部原理

    文章介绍了Python中dataclass的实现原理,通过自定义装饰器实现了__init__和__repr__方法,并解释了__annotations__属性和exec函数在其中的作用,感兴趣的朋友跟随小编一起看看吧
    2025-01-01
  • python连接mysql调用存储过程示例

    python连接mysql调用存储过程示例

    这篇文章主要介绍了python连接mysql调用存储过程示例,需要的朋友可以参考下
    2014-03-03
  • Python 编程速成(推荐)

    Python 编程速成(推荐)

    这篇文章主要介绍了Python 编程速成,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • python itchat实现调用微信接口的第三方模块方法

    python itchat实现调用微信接口的第三方模块方法

    这篇文章主要介绍了python itchat实现调用微信接口的第三方模块方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • python导出chrome书签到markdown文件的实例代码

    python导出chrome书签到markdown文件的实例代码

    python导出chrome书签到markdown文件,主要就是解析chrome的bookmarks文件,然后拼接成markdown格式的字符串,最后输出到文件即可。下面给大家分享实例代码,需要的朋友参考下
    2017-12-12
  • Python实现html转换为pdf报告(生成pdf报告)功能示例

    Python实现html转换为pdf报告(生成pdf报告)功能示例

    这篇文章主要介绍了Python实现html转换为pdf报告功能,结合实例形式分析了Python使用pdfkit实现HTML转换为PDF的相关操作技巧与注意事项,需要的朋友可以参考下
    2019-05-05
  • 利用Python写一个爬妹子的爬虫

    利用Python写一个爬妹子的爬虫

    这篇文章主要给大家介绍了关于利用Python写一个爬妹子爬虫的相关资料,文中通过实例代码将实现的方法一步步介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-06-06
  • python中re.findall() 的使用案例

    python中re.findall() 的使用案例

    re.findall() 函数是 python 中正则表达式模块(re)的一个重要函数,它可以根据正则表达式搜索字符串,并返回匹配的字符串列表,这篇文章给大家介绍了python中re.findall() 的使用案例,感兴趣的朋友跟随小编一起看看吧
    2023-09-09

最新评论