爬取网站内的全部小说

爬取网站内的全部小说

我们需要用到的模块有
re
BeautifulSoup
在这里插入图片描述

首先我们要确定我们爬取的网站:http://www.136book.com/tuijian.php?id=1

在爬取各个书目录的网址时我选择了用正则表达式来爬取:
选用正则爬取单独的href是比较方便的。爬取后要确定是否为书目录的网站。我发现目录章节的网址的后缀target="blank。用此确定是否为目录的href
在这里插入图片描述
具体代码如下:
在这里插入图片描述
,爬取目录的网址后,就是爬取各个章节网址
这次我们要用到新的模块BeautifulSoup。首先先看一下目录章节的网址源代码在这里插入图片描述
地址都在:id=‘book_detail’, class
=‘box1’
利用这一点获取各个章节的href
具体代码如下
在这里插入图片描述
获取文本内容
获取文本只需要观察文本在哪个位置,发现文本储存的位置为:id=‘content’

在这里插入图片描述
代码如下在这里插入图片描述
最后保存在文件中。就完成了
完整代码
`import urllib.request
import re
from urllib import request
from bs4 import BeautifulSoup

data=urllib.request.urlopen(“http://www.136book.com/tuijian.php?id=1”).read()
data=data.decode(‘UTF-8’)
linkre=re.compile(‘a href="(.+?)" target="blank’)
for x in linkre.findall(data):
if 'http’in x:
url2 = x
head = {}
head[ ‘User-Agent’] = ‘Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19’
req2 = request.Request(url2, headers=head)
response2 = request.urlopen(req2)
html2 = response2.read()
soup2 = BeautifulSoup(html2, ‘lxml’)
soup2_texts = soup2.find(‘div’, id=‘book_detail’, class
=‘box1’).find_next(‘div’)
f = open(soup2.title.text+’.txt’, ‘w+’)
for link in soup2_texts.ol.children:
if link != ‘\n’:
download_url = link.a.get(‘href’)
download_req = request.Request(download_url, headers=head)
download_response = request.urlopen(download_req)
download_html = download_response.read()
download_soup = BeautifulSoup(download_html, ‘lxml’)
download_soup_texts = download_soup.find(‘div’, id=‘content’)
for script in download_soup(‘script’):
script.extract()
download_soup_texts = download_soup_texts.text
f.write(link.text + ‘\n\n’)
f.write(download_soup_texts)
f.write(’\n\n’)
f.close()
`

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值