python爬虫之笔趣文学

python爬虫之笔趣文学


我们来一起爬爬笔趣文学这个网站,仅仅作为学习来使用


1.获取URL和解析页面
随便找一篇文章:元尊
url:https://www.biqukan.com/0_790/

snipaste_20181114_070528.png

好了,知道这个页面结构,我们就可以进行解析了:

# -*- coding:UTF-8 -*-
from bs4 import BeautifulSoup
import requests,sys
#url
url = "https://www.biqukan.com/0_790/"
response = requests.get(url).text
#解析网页
soup = BeautifulSoup(response,'lxml')
div = soup.find_all('dl')
print(div)

结果:

[<dl>
<dt>《元尊》最新章节列表</dt>
<dd><a href="/0_790/22893899.html">第六百三十九章 过时</a></dd>
<dd><a href="/0_790/22883757.html">第六百三十八章 斗法</a></dd>
<dd><a href="/0_790/22873845.html">第六百三十七章 大战起</a></dd>
<dd><a href="/0_790/22862545.html">第六百三十六章 第三道圣纹</a></dd>
<dd><a href="/0_790/22850081.html">第六百三十五章 神秘玉璧</a></dd>
........

由此我们知道了每篇文章的名称和href


2.获取每篇文章的url和内容
我们随便打开一篇文章会发现,它的url是https://www.biqukan.com/0_790/22893899.html,和我们前面比较就是https://www.biqukan.com/0_790/+href的组合,由此我们就知道了每篇文章的url了。
我们先拿一片文章联系一下:

# -*- coding:UTF-8 -*-
from bs4 import BeautifulSoup
import requests,sys
#url
url = "https://www.biqukan.com/0_790/"
url_txt = 'https://www.biqukan.com/0_790/22893899.html'
#response = requests.get(url).text
#解析网页
#class_是为了避免和python中的关键字class冲突
#soup = BeautifulSoup(response,'lxml')
#div = soup.find_all('div',class_='listmain')
#print(div)
response = requests.get(url_txt).text
soup = BeautifulSoup(response,'lxml')
div = soup.find_all('div',class_='showtxt')
print(div[0].text)

结果:

        “而你们苍玄宗,已经过时了!”  https://www.biqukan.com/0_790/22893899.html  请记住本书首发域名:www.biquka

郁闷,为什么内容显示不全,查了好久的资料,也没有查出个所以然来,希望大家知道赐教一下!!!
我分析了一下网页,发现我这样写没什么问题,猜测是不是编译器的原因,果然,我在cmd上运行,结果是对的,麻蛋,浪费时间。


snipaste_20181114_081641.png

3.保存数据
我们先采用写入文件的方式来保存

# -*- coding:UTF-8 -*-
from bs4 import BeautifulSoup
import requests,sys
#url
url = "https://www.biqukan.com/0_790/"
url_txt = 'https://www.biqukan.com/0_790/22893899.html'
#response = requests.get(url).text
#解析网页
#class_是为了避免和python中的关键字class冲突
#soup = BeautifulSoup(response,'lxml')
#div = soup.find_all('div',class_='listmain')
#print(div)
response = requests.get(url_txt).text
soup = BeautifulSoup(response,'lxml')
div = soup.find_all('div',class_='showtxt')
print(div[0].text)
with open("2.txt",'a', encoding='utf-8') as f:
 #   f.write(name + '\n')
    f.writelines(div[0].text)
    f.write('\n\n')

我们会发现当前目录下出现了2.txt的文件,打开正是我们爬取的内容


4.整合代码
我们将目录和内容放在一起,爬取所有文章内所有章节的内容

# -*- coding:UTF-8 -*-
from bs4 import BeautifulSoup
import requests,sys

class Biquwen(object):
    def __init__(self):
        self.url = "https://www.biqukan.com/0_790/"
        self.url2 = "https://www.biqukan.com"
        self.name = []
        self.nums = []
        self.urls = []
    def get_url(self):
        response = requests.get(self.url).text
        #解析网页
        #class_是为了避免和python中的关键字class冲突
        soup = BeautifulSoup(response,'lxml')
        divs = soup.find_all('dd')
        self.nums = len(divs[12:])
        for div in divs:
            #取标签和路径
            self.name.append(div.string)
            self.urls.append(self.url2+div.a.get('href'))
    '''
    @获取每章节的内容
    '''
    def get_text(self,url2):
        response = requests.get(url = url2).text
        soup = BeautifulSoup(response,"lxml")
        divs = soup.find_all('div',class_="showtxt")
        divs = divs[0].get_text()
        return divs

    '''
    @写入文件
    '''
    def write_text(self,name,path,tet):
        with open(path,'a', encoding='utf-8') as f:
            #print(tet)
            f.write(name + '\n')
            f.write(str(tet))
            f.write('\n\n')

if __name__=="__main__":
    bi = Biquwen()
    bi.get_url()
    for num in range(bi.nums):
        #print(bi.get_text(bi.urls[num]))
        bi.write_text(bi.name[num],"元尊.txt",bi.get_text(bi.urls[num]))

最后,我们会发现我们的文件夹下面有了元尊.txt这个文件,所有的内容也被写进去了。
OK,终于搞定了。

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

推荐阅读更多精彩内容

  • 声明:本文讲解的实战内容,均仅用于学习交流,请勿用于任何商业用途! 一、前言 强烈建议:请在电脑的陪同下,阅读本文...
    Bruce_Szh阅读 12,592评论 6 28
  • http header 消息通常被分为4个部分:general header即头部, request header...
    徐薇薇阅读 31,723评论 0 5
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    aimaile阅读 26,298评论 6 428
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • 喜欢薄荷的味道 很清新 不做作 也曾以为 我会爱上它的颜色 可那些矫情的日子里 陷入远山的浪漫 无法自拔地 爱上...
    蓝桉_屿阅读 252评论 0 1