Python《从零开始学习网络爬虫》——第04课,爬取笔趣阁小说《鬼吹灯》文章标题

一、爬虫代码:


from bs4 import BeautifulSoup #导入相关库函数
import requests
import time   



for page in range(14,33):  #按照鬼吹灯文章网址来构建,从而爬取1到15章文章题目

    url=f'http://www.biquge5200.cc/61_61284/1417187{page}.html'  #方式一构建url

    #进入网页观察,构建headers
    headers={
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.125 Safari/537.36',
        'Host': 'www.222biquge.com',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
        'Cookie': 'ckAC=1; Hm_lvt_e1880e6cb1c4b425fe63ef614765e9ec=1694943134,1695103196; width=85%25; Hm_lpvt_e1880e6cb1c4b425fe63ef614765e9ec=1695104708; __gads=ID=fdfbb2c2fc6d8266-222da8e5e3e3009f:T=1695104707:RT=1695104707:S=ALNI_MbBKmyOiE0rr-z9yI5R0SE_YUe2pQ; __gpi=UID=00000c4b8769dfe5:T=1695104707:RT=1695104707:S=ALNI_Makuto0k-PH61jsK4RcY1DN83cXng',
    }

    #进行数据抓取操作
    try:
        response=requests.get(url=url,headers=headers)
            #print(response.text)   #观察提取的响应体数据

        soup=BeautifulSoup(response.text,'lxml')

        titles=soup.select('.bookname>h1')  #获取到文章题目标签对象
            
        tuijians=soup.select('.bookname>.lm>a')  #获取到其他小说推荐对象
            

        for title,tuijian in zip(titles,tuijians):  #构建字典,键值对形式
            data={
                'title':title.get_text().strip(),    #获取到文章题目
                'tuijian':tuijian.get_text().strip()   #获取到其他小说推荐
                 }
            # print(title.get_text().strip(),tuijian.get_text().strip())
            print(data)
    
    except all:
        print('跳过此页')

    #样例注释:
    """
    'title':title.get_text().strip(),
    'tuijian':tuijian.get_text().strip()
    得到
    {'title': '第一章?旧土', 'tuijian': '我有一剑'}
    """

 代码结果:


二、网页分析+代码构建思路

 网页链接:http://www.biquge5200.cc

笔趣阁_书友最值得收藏的网络小说阅读网_新笔趣阁5200笔趣阁是广大书友最值得收藏的网络小说阅读网,新笔趣阁网站收录了当前最火热的网络小说,笔趣阁5200免费提供高质量的小说最新章节,是广大网络小说爱好者必备的小说阅读网。icon-default.png?t=N7T8http://www.biquge5200.cc/

根据上图所示分别进入每一章的url,并观察urls:

我们发现只有这里数字决定着不同的章节,所以准备构建循环来,提取每一章节的标题。


三、知识点

(一)构建urls

#方式一:
for page in range(14, 33):  # 按照鬼吹灯文章网址来构建,从而爬取1到15章文章题目
    
    url = f'http://www.biquge5200.cc/61_61284/1417187{page}.html'  
    
    #然后根据url进行访问
    
    #response=requests.get(url=url)
    #print(response.text)

   
#方式二:这种写法后面比较常用
    
   urls = ['http://www.biquge5200.cc/61_61284/1417187{}.html'.format(str(page))for page in range(14,33)]

for url in urls:
   print(url)

(二)try和except处理异常


#处理了整数除以0所报出的异常
try:
    for i in range(0,30):
        result=5//i
except ZeroDivisionError: 
    pass

(三)zip函数

Python 的 zip() 函数创建了一个迭代器,它将聚合来自两个或多个可迭代对象的元素

list1=[1,2,3,4]
list2=['a','b','c','d']

for a,b in zip(list1,list2): #创建迭代器,a取值于list1,b取值于list2
    print(a,b)

(四)CSS相关语法


        
        titles=soup.select('.bookname>h1') 
        #根据class标签为bookname提取,接着提取所有后代标签h1

        tuijians=soup.select('.bookname>.lm>a') 
        #根据class标签为bookname提取,接着提取class标签为lm标签,再提取所有后代标签a


      

CSS语法虽然简单,但对于复杂的html标签,就显得比较乏力,建议掌握Xpath语法,html标签就迎刃而解了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烧酒调调

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值