python爬虫之笔趣文学

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

1.获取URL和解析页面

随便找一篇文章:元尊

url:https://www.biqukan.com/0_790/

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

# -*- 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)

结果:

《元尊》最新章节列表

第六百三十九章 过时第六百三十八章 斗法第六百三十七章 大战起第六百三十六章 第三道圣纹第六百三十五章 神秘玉璧

........

由此我们知道了每篇文章的名称和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上运行,结果是对的,麻蛋,浪费时间。

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,终于搞定了。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181124G0A08E00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券