Python爬虫-抛砖引玉
愿与此文献给那可爱的孩子啊海,毕竟他只是个孩子.
上周我路过小朋友啊海的桌子边,看到他在那用鼠标一边又一边的复制粘贴一本小说,心生好奇,搭讪之。
我:啊海,你在干吗?下小说吗?
啊海:恩,对啊,月底了家里断网了。只能看小说了。
我:哦,不过你就这样一章章下吗?我看这都上千章了呢?
啊海:恩,找不到可以下载的链接,只能自己一章章下。
我:...无语中...
在这个moment呢.......
在网络上有一种自动实现啊海机械操作的技术,术语叫网络爬虫,百度上的解释是按照一定的规则,自动地抓取互联网上的信息.
恰好我知道有一种语言可以很是方便并且简单的实现这种操作,它呢,就是python.来吧,说干就干,让我们嗨起来.
下面我们先来搭建环境吧.
- 前往python的官网https://www.python.org,下python3的最新版本。别问python2可不可以,找打是不?
- 下个IDE吧.虽说不用也可以,但是我就是想下啊.就选PyCharm吧.下community版本的就可以了,不收费呢,土豪可以试下Professional版本的.随便让我涨涨见识.
- 打开安装包,一路Next下去就可以了.
- 打开PyCharm新建个工程吧.灰常简单.
- 安装requests和beautifulsoup.用pip就可以了.分别在Terminal输入pip install requests和pip install beautifulsoup4
- 新建个main.py.测试下环境是否OK.
如果上面都没有问题的话,我们先找一个网站,去它里面抓取小说就可以了.找一个简单的网站吧.就它了https://www.xbiquge6.com/.(见鬼了吧.竟然不让我截图,一上图就无法显示?那就先这样吧.)
然后就可以写代码了,第一次吗,先上一个简单粗暴的版本吧.就按啊海下的那部伏天氏为例子,把下面的代码敲入IDE中,点RUN就可以坐等程序把小说下载好了.最后会在工程目录下生成一个伏天氏.txt,打开它就可以慢慢看小说了.
这是最终的源码.
#coding:utf-8 import requests import time import sys import os import queue from bs4 import BeautifulSoup base_url = 'https://www.xbiquge6.com' first_url = 'https://www.xbiquge6.com/9_9208/5095645.html' q = queue.Queue() def get_content(url): try: headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36' } r = requests.get(url=url, headers=headers) r.encoding = 'utf-8' content = r.text return content except: s = sys.exc_info() print("Error '%s' happened on line %d" % (s[1], s[2].tb_lineno)) return " ERROR " def praseContent(content): soup = BeautifulSoup(content,'html.parser') chapter = soup.find(name='div',class_="bookname").h1.text content = soup.find(name='div',id="content").text save(chapter, content) next1 = soup.find(name='div',class_="bottem1").find_all('a')[2].get('href') if next1 != '/9_9208/': q.put(base_url+next1) print(next1) def save(chapter, content): filename = "伏天氏.txt" f =open(filename, "a+",encoding='utf-8') f.write("".join(chapter)+' ') f.write("".join(content.split())+' ') f.close def main(): start_time = time.time() q.put(first_url) while not q.empty(): content = get_content(q.get()) praseContent(content) end_time = time.time() project_time = end_time - start_time print('程序用时', project_time) if __name__ == '__main__': main()
后记:
这篇文章是没有把许多知识点说明白,因为知识点还是有一些,一两篇还说不完呢.还是等以后有空呢,再来把这些坑一个个填上.然后呢.那几个GIF操作图我整了许久都高清不了,吐血放弃了.新手嘛.就酱紫吧.
文章源自网络,侵删。
相关推荐
夜斗不是神 2020-11-17
染血白衣 2020-11-16
YENCSDN 2020-11-17
lsjweiyi 2020-11-17
houmenghu 2020-11-17
Erick 2020-11-17
HeyShHeyou 2020-11-17
以梦为马不负韶华 2020-10-20
lhtzbj 2020-11-17
pythonjw 2020-11-17
dingwun 2020-11-16
lhxxhl 2020-11-16
坚持是一种品质 2020-11-16
huavhuahua 2020-11-20
meylovezn 2020-11-20
逍遥友 2020-11-20
weiiron 2020-11-16