成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一日一技:爬蟲如何正確從網頁中提取偽元素?

網絡 通信技術
我們來看一個網頁,大家想想使用 XPath 怎么抓取。可以看到,在源代碼里面沒有請抓取我!這段文字。難道這個網頁是異步加載?我們現在來看一下網頁的請求。

我們來看一個網頁,大家想想使用 XPath 怎么抓取。

 

可以看到,在源代碼里面沒有請抓取我!這段文字。難道這個網頁是異步加載?我們現在來看一下網頁的請求:

 

網頁也沒有發起任何的Ajax 請求。那么,這段文字是從哪里來的?

我們來看一下這個網頁對應的 HTML:

 

整個 HTML 里面,甚至連 JavaScript 都沒有。那么這段文字是哪里來的呢?

有點經驗的同學,可能會想到看一下這個example.css文件,其內容如下:

 

沒錯,文字確實在這里面。其中::after,我們稱之為偽元素(Pseudo-element)[1]。

對于偽元素里面的文字,應該如何提取呢?當然,你可以使用正則表達式來提取。不過我們今天不準備講這個。

XPath 沒有辦法提取偽元素,因為 XPath 只能提取 Dom 樹中的內容,但是偽元素是不屬于 Dom 樹的,因此無法提取。要提取偽元素,需要使用 CSS 選擇器。

由于網頁的 HTML 與 CSS 是分開的。如果我們使用 requests 或者 Scrapy,只能單獨拿到 HTML 和 CSS。單獨拿到 HTML 沒有任何作用,因為數據根本不在里面。單獨拿到 CSS,雖然有數據,但如果不用正則表達式的話,里面的數據拿不出來。所以 BeautifulSoup4的 CSS 選擇器也沒有什么作用。所以我們需要把 CSS 和 HTML 放到一起來渲染,然后再使用JavaScript 的 CSS 選擇器找到需要提取的內容。

首先我們來看一下,為了提取這個偽元素的值,我們需要下面這段Js 代碼:

window.getComputedStyle(document.querySelector('.fake_element'),':after').getPropertyValue('content')

其中,ducument.querySelector的第一個參數.fake_element就表示值為fake_element的 class 屬性。第二個參數就是偽元素:after。運行效果如下圖所示:

 

為了能夠運行這段 JavaScript,我們需要使用模擬瀏覽器,無論是 Selenium 還是 Puppeteer 都可以。這里以 Selenium 為例。

在 Selenium 要執行 Js,需要使用driver.execute_script()方法,代碼如下:

 

提取出來的內容最外層會包上一對雙引號,拿到以后移除外側的雙引號,就是我們在網頁上看到的內容了。

參考資料

 

[1]偽元素(Pseudo-element): https://developer.mozilla.org/zh-CN/docs/Web/CSS/Pseudo-elements

本文轉載自微信公眾號「未聞Code」,可以通過以下二維碼關注。轉載本文請聯系未聞Code公眾號。

 

責任編輯:武曉燕 來源: 未聞Code
相關推薦

2022-03-12 20:38:14

網頁Python測試

2021-06-08 21:36:24

PyCharm爬蟲Scrapy

2024-07-30 08:16:18

Python代碼工具

2023-10-28 12:14:35

爬蟲JavaScriptObject

2022-03-07 09:14:04

Selenium鼠標元素

2021-09-14 21:29:01

項目環境變量

2021-10-15 21:08:31

PandasExcel對象

2025-05-28 03:15:00

Scrapy數據sleep

2024-10-16 21:47:15

2021-12-15 22:04:11

瀏覽器重復登錄

2022-06-28 09:31:44

LinuxmacOS系統

2024-07-30 08:11:16

2024-01-29 00:45:36

跨域后端接口

2024-11-11 00:38:13

Mypy靜態類型

2021-05-08 19:33:51

移除字符零寬

2022-08-26 09:34:19

單元測試代碼項目

2022-01-26 07:35:10

爬蟲Requestsgzip

2021-09-26 05:01:55

Scrapy項目爬蟲

2021-04-27 22:15:02

Selenium瀏覽器爬蟲

2021-04-12 21:19:01

PythonMakefile項目
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 无码日韩精品一区二区免费 | 精品久久久久一区二区国产 | 中文字幕91av | 成人日b视频 | 亚洲成人播放器 | 成人免费久久 | 欧美一区二区三区在线观看 | 日本超碰 | 一区二区三区四区国产 | 秋霞a级毛片在线看 | 国产精品久久久亚洲 | 欧美日韩久久精品 | 国产精品精品视频一区二区三区 | 欧美日韩国产一区二区三区 | 国产精品一区一区三区 | 亚洲欧洲日韩精品 中文字幕 | 天天躁天天操 | 精品欧美乱码久久久久久1区2区 | 蜜桃av鲁一鲁一鲁一鲁 | 天天操天天操 | 国产日韩欧美 | 亚洲人成一区二区三区性色 | 国产精品视频一二三区 | 中文字幕在线一区二区三区 | 亚洲综合小视频 | 夜夜夜久久久 | 麻豆成人在线视频 | 日韩国产高清在线观看 | 国产不卡一区在线观看 | 成人午夜精品 | 久久久久久av | 精品视频一区二区三区 | 97视频在线观看免费 | 97起碰| 亚洲 欧美 日韩在线 | 欧美综合自拍 | 91在线观看免费 | 国产一区二区三区在线免费观看 | 日本高清视频网站 | 国产成人精品久久二区二区91 | 亚洲视频免费在线观看 |