引言:
不瞒大家,小编学编程之前就有一个梦想,夏日在家开空调,喝可乐,在别人面前装逼,在电脑前一顿操作(自然也少不了让人欲罢不能的小说)😎
目标网址:https://m.qb5.tw/book_8227
1,爬取网页源码
2,在网页源码中提取带章节url的元素
3,在元素中提取出url,并对提取的url进行请求,把爬到的文章下载下来
ps:此教程为基础教程,代码是小编用最基本的语法自己写的,所以代码可读性应该还行😎,代码质量若有不足之处还请大佬指正😳🙏,
以后会带大家解锁多线程之类的高级玩法😇
先备好相关库:
import requests
from bs4 import BeautifulSoup
1,爬取网页源码
url="https://m.qb5.tw/chapters_8227/"
a=requests.get(url)
print(a)#验证一下是否爬取成功
看了上面这几行代码大家大家应该可以发现请求的url和上面给的url有些出入😮,那是因为上面给的url是那个小说网站的首页😐,我的代码上的url是打开那个网站后点开后点击网站的目录链接所得到的url😘,我要获取每个章节的网址,所以我要从目录业中获取,大家应该没意l见吧😅
2,在网址中提取出章节的url
还是老生常谈 -BeautifulSoup解析提取
soup1=BeautifulSoup(a.text,"html.parser")#解析成BeautifulSoup格式
v=soup.select("a[href]")
'''
css选择器提取带超链接的元素-说白了就是提取出带章节url的元素(当然这不是很严谨,因为也有其它的东西)
我们可以尝试输出一下发现它前几个并不是我们想要的链接,这样就会导致请求的时候会报错😨,怎么办呢,我们可以用下边的列表方法把要看的章节单独拎出来😎)
'''
x=v[4],v[5]#列表方法单独拎出带第一,二章url的元素
3,在元素中提取出url,并对提取的url进行请求,把爬到的文章下载至本地
for i in x:
urls=i.get("href")
print(urls)#验证一下
reponses=requests.get(urls)
print(reponses)#验证一下
soup2=BeautifulSoup(reponses.text,"html.parser")#BeautifulSoup解析
for i in soup2:
text=i.text#提取出文本内容并命名为text
with open("宅家看小说","w")as f:
f.write(text)#下载下来
print("爬取完毕")
源码:ps:由于手机版权低,所以无法上传图片,这里用文字代替了
import requests
from bs4 import BeautifulSoup
url="https://m.qb5.tw/chapters_8227/"
a=requests.get(url)
print(a)
soup1=BeautifulSoup(a.text,"html.parser")
v=soup1.select("a[href]")
x=v[4],v[5]
for i in x:
urls=i.get("href")
reponses=requests.get(urls)
print(urls)
print(reponses)
soup2=BeautifulSoup(reponses.text,"html.parser")
text=soup2.text
print(text)
with open("宅家看小说","w")as t:
t.write(text)
print("爬取完毕")
这个网站可能有反爬😱,所以可能会出现响应状态码为200但服务器不反会内容的情况😦,后期会讲反反爬😎,这里大家如果遇到了这种情况多试几次就可以了