說到python爬蟲,就一定會涉及到「反爬」策略,就會遇到「爬取動態頁面元素」的問題,如果目標**沒有其他的反爬措施,那麼「動態元素」就是我們這裡要解決的唯一難題。而解決的方式就是簡單粗暴地想辦法模擬人在瀏覽器上操作,進而觸發相應動態元素的載入,也就指向了強大的selenium
。
眾所周知,chrome
是google家的瀏覽器,在2023年開始推出了自己的無頭模式。而我們曾經熟悉的phantomjs
卻在之後不再被selenium
所支援(目前只支援chrome
和firefox
的無頭模式,據說這是一種大廠效應23333)。在macos
下,坑會少一些,但放在我的伺服器上坑就多了起來。
注:以下配置過程請在非root
使用者賬號下完成。
1.1 新增repo
源
$ sudo
vi /etc/yum.repos.d/google.repo
在開啟的空檔案中填入以下內容
[google]
name=google-x86_64
baseurl=
enabled=1
gpgcheck=0
gpgkey=
1.2yum
安裝$ sudo yum update
$ sudo yum install google-chrome-stable
2.1 檢視chrome
的版本$ google-chrome --version
2.3 新增至環境變數$path
$ sudo vim ~/.bash_profile
開啟後在適當的位置新增:
(假設你把chromedriver
放到了/home/***/drivers/bin/
目錄下)
export path=/home/***/drivers/bin:$path
path=
$path:/home/***/drivers/bin
這兩種方式作用上是完全等價的。
selenium
可以在你專案的虛擬環境中簡單地用pip
安裝
$ pip3 install selenium
from selenium.webdriver import chrome
from selenium.webdriver.chrome.options import options
driver_path =
'/home/***/drivers/bin/chromedriver'
if __name__ ==
"__main__"
:# 設定瀏覽器
options = options(
) options.add_argument(
'--no-sandbox'
) options.add_argument(
'--headless'
)# 無頭引數
options.add_argument(
'--disable-gpu'
)# 啟動瀏覽器
driver = chrome(executable_path=driver_path, options=options)
# 訪問目標url
driver.get(
'')print
(driver.page_source)
driver.close(
) driver.quit(
)
注意,這裡的--no-sandbox
和--headless
是必須的,而且必須按照--no-sandbox
在最前面的順序,否則會報一些非常摸不著頭腦的錯誤(這就是最坑的地方)。
希望看到這篇文章的你能解決想要解決的問題。
centos7上ansible初步使用
1.安裝ansible yum install ansible 2.配置ssh互信,假設openssh6.6已經裝好 ssh keygen t rsa 可以發現在 ssh目錄下多了一對公鑰和私鑰 cat id rsa.pub authorized keys 這個檔案沒有就自己建立個,每個主機都有一對...
centos7上使用locate命令
小貼士 在centos7以上的系統中使用 locate 檔案查詢命令,發現該命令不可用。檢查了下,原來是centos7預設沒有安裝該命令,在聯網狀態執行 yum install mlocate 命令即可安裝 locate 命令。安裝完之後執行 locate inittab 發現結果如下 locate...
centos7中安裝chrom瀏覽器問題與解決
參考文章 安裝參考 閃退問題解決參考 雙擊google chrome圖示無反應,無法開啟瀏覽器。在命令列開啟報錯 root wilber usr bin google chrome 5024 5024 0113 164154.164753 error zygote host impl linux.c...