【经验分享】利用palywright爬取网页上的内容_爬虫

个人非常喜欢playwright这个模块,它非常契合python的简单易用的特性,特别适合我这种业余爱好者。

playwright模块能在独立的浏览器上,进行各项操作,以及源网页代码的提取,截图操作。

这种特性,就让他在爬取网页上内容这块,也有了一席之地。可以这么说,我们能在网页看到的,就应该能爬取下来。

举例:爬取网站上的小说目录

网上关于小说爬虫知识,随便一搜都有介绍,所以这里就不对网页源代码做过多的分析,主要是讲解如何通过playwright保存关键信息。

主要思路如下:

【经验分享】利用palywright爬取网页上的内容_爬虫_第1张图片

playwright安装需要分两步:

pip install playwright 

等模块安装完,还需要输入以下命令,进行内置浏览器安装:

playwright install

待安装完毕,我们便可以使用playwright模块进行网页内容的抓取。

假设我们要爬取网站的小说目录信息,经过网页源代码分析,可以发现每一章节的节点都对应一个URL地址,大概结构是这样:

href = "目标章节的URL信息"  alt="第十三章 XXXXXX" 

 这时候我们就能通过playwright定位到关键节点,提取相关内容:

#  导入playwright模块
from playwright.sync_api import Playwright, sync_playwright, expect

def run(playwright: Playwright) -> None:
    # 打开浏览器
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()
    page.goto("这里输入目标网页地址")
    #  利用XPATH定位小说目录位置
    list_1 = page.query_selector_all('//*[@id="list"]/div//a')  # 使用page.query_selector_all获取a节点列表
    #  利用for遍历每一个a节点
    for i in list_1:
        text = i.get_attribute("href")  #定义text变量接收a标签底下的href属性
        with open(f"./小说目录.txt", "a", encoding="gbk") as f:     #利用open打开一个txt文件,如果文件不存在,会自动创建,"a"表示追加写入信息。
            f.write(novel_2)
    page.close()
    # ---------------------
    context.close()
    browser.close()

with sync_playwright() as playwright:
    run(playwright)

获取节点的关键代码是(query_selector_all表示获取所有节点,形成个列表):

list_1 = page.query_selector_all('//*[@id="list"]/div//a')  # 使用page.query_selector_all获取a节点列表

获取a标签底下的href属性:

text = i.get_attribute("href")  #定义text变量接收a标签底下的href属性

通过以上代码就能获取标签底下的属性内容,假设要获取的是标签下的文本信息,可以使用以下代码:

text = page.query_selector().text_content()  # 在定位的地方使用text_content就能够获取文本信息

常用提取内容的代码还有:

提取 单个a标签 class 属性为 herf 的信息,如匹配到多个,则取第一个:

text = page.query_selector('//*[@id="list"]/div//a/@href') #单独提取一个节点的href属性,在xpath语法后面加@href就能匹配到属性信息

截图screenshot,对截图后的结果进行ocr识别也能获取页面信息:

page.goto("这里输入目标网页地址")
page.screenshot(path="image.png")
page.screenshot(path=”image.png“,full_page = True)

利用以上关键代码块,基本能完成大部份网页内容的抓取。

你可能感兴趣的:(playwright,爬虫,python,开发语言)