Python爬虫:多线程爬取盗墓笔记

本文分享了使用Python和XPath爬取《盗墓笔记》小说标题、章节及正文的完整代码,介绍了页面获取、正文抽取解析、文件保存及多线程运行的方法。

用到的库函数

import requests

import time

from lxml import etree

from multiprocessing.pool import Pool

爬取用xpath

爬取 盗墓笔记的标题、章节、正文

直接上代码:

页面获取;

def get_info(url):
   
    headers = {
        'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3722.400 QQBrowser/10.5.3738.400'
    }

    response = requests.get(url=url,headers=headers)
    return response.text

正文抽取解析:

def paser_conten(contents):
    selectors = etree.HTML(contents)
    pages = selectors.xpath('//article[@class="article-content"]//p/text()')
    pages = ''.join(pages)
    #print(pages)
    return pages

文件保存:

def save(content):
    with open('daomubiji1.doc','a',encoding='utf-8')as f:
        f.write(content+'\n')

信息提取:

def get_books(url):
    selector = etree.HTML(get_info(url))
    title = selector.xpath('//h1[@class="focusbox-title"]/text()')[0]
    print(title)
    save(title)
    items = selector.xpath('//article[@class="excerpt excerpt-c3"]')
    for item in items:
        section = item.xpath('./a/text()')[0]
        print(section)
        save(section)
        detail_href = item.xpath('./a/@href')[0]
        contents = get_info(detail_href)
        detail_content = paser_conten(contents)
        print(detail_content)
        save(detail_content)

创建线程运行:

if __name__ == "__main__": 
     print('***开始爬取****'*50)  
    url = ['http://www.daomubiji.com/dao-mu-bi-ji-%s' %i for i in range(1,2)]   
    pool = Pool()
    reaponse = pool.map(get_books,url)
    pool.close()
    pool.join()
    time.sleep(1)
   
   
    

爬取结果(内容截屏不全):

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

影雀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值