一、环境
1.语言环境:python3.10.9
2.pycharm2022.10专业版
3.anaconda及自带的Jupyter Notebook
二、设计思路
通过调度,返回url的指定内容并进行下载。
三、详细内容
这个程序主要是基于python语言爬取bqg的一部小说的其中一个章节(本来是想爬取有道翻译做字典翻译的,结果网站进行了加密加固,需要绕开)
1.引入这次爬取内容所需要的模块
request模块主要是返回http请求的;BeautifulSoup模块主要是用于解析html代码并提取、返回数据的;re模块是通过正则表达式来匹配处理字符串。
2.设置参数,解析返回的网页数据
这一步需要分析网页返回的代码以及我所需要的值
3.保存内容
四、相关代码
# 引入相关模块,增加tqdm模块,能知道下载进度
import requests
from bs4 import BeautifulSoup
from tqdm import tqdm
import re
# 确认爬取的网页
url='https://www.biqiuge8.cc/book/90141070/27078241.html'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
#打印抓取的内容
#print(soup)
#f = open(r"e:\book.txt",'a+',encoding='utf-8')
#t1 = soup.find('a', href="/book/90141070/")
#t1 = soup.findAll('a')
# 第三步:解析网页数据
t1 = soup.find('a', href="/book/90141070/")
t2 = soup.find('h1')
content = soup.find('div', id="content", class_="showtxt").text.replace(' ','\n').replace('app2();','\n')
content = content.split('\r\n')
# 第四步:保存内容
f = open(r"e:\book1-2.txt", 'a+', encoding='utf-8')
#f.write(t1 + '\n')
f.write(t2.get_text() + '\n')
for line in tqdm(content):
f.write(f'{line}\n')
f.close()
print('下载完成')
五、遇到的报错
BeautifulSoup导入lxml报错
原本的程序里面,soup = BeautifulSoup(response.content, ‘lxml’)
网上搜了下,报错的原因是因为版本语法错误,只要将lxml改成html.parser即可。