使用requests.get()得到的源代碼與瀏覽器中的不一樣


用requests.get()之后得到的源代碼跟瀏覽器里面的不一樣

崔慶才的《python3網絡爬蟲開發實戰》在2.3.3節:

我們用urllib或requests獲取到的是HTML源代碼,但是這個網頁是用js渲染的,上面兩個庫不會像瀏覽器那樣繼續運行后面請求來的js模塊,所以不一樣。

 

==================

Selenium是一個用於測試網站的自動化測試工具,支持各種瀏覽器包括Chrome、Firefox、Safari等主流界面瀏覽器,同時也支持phantomJS無界面瀏覽器。

 

安裝 Selenium

pip install Selenium

安裝瀏覽器驅動

Selenium3.x調用瀏覽器必須有一個webdriver驅動文件

  1. Chrome驅動文件下載: 點擊下載chromedrive
  2. Firefox驅動文件下載:   點解下載geckodriver

 下載合適版本文件,解壓,放到某個位置 , 例如 D:\software\geckodriver-v0.30.0-win64\

 

 

 

 

配置環境變量

設置瀏覽器的地址非常簡單。 我們可以手動創建一個存放瀏覽器驅動的目錄,如: F:\GeckoDriver , 將下載的瀏覽器驅動文件(例如:chromedriver、geckodriver)丟到該目錄下。

我的電腦–>屬性–>系統設置–>高級–>環境變量–>系統變量–>Path,將“F:\GeckoDriver”目錄添加到Path的值中。比如:Path字段;F:\GeckoDriver

 示例,點擊百度中的新聞

# -*- coding:UTF-8 -*-
from selenium import webdriver

from time import sleep
#1.創建Chrome瀏覽器對象,這會在電腦上在打開一個瀏覽器窗口
browser = webdriver.Firefox(executable_path ="D:\software\geckodriver-v0.30.0-win64\geckodriver.exe")

#2.通過瀏覽器向服務器發送URL請求
browser.get("https://www.baidu.com/")

sleep(3)

#3.刷新瀏覽器
browser.refresh()

#4.設置瀏覽器的大小
browser.set_window_size(1400,800)

#5.設置鏈接內容
element=browser.find_element_by_link_text("新聞")
element.click()

 

 

出現錯誤:

selenium.common.exceptions.WebDriverException: Message: 'geckodriver-v0.30.0-win64' executable may have wrong permissions.

解決方法:

browser = webdriver.Firefox(executable_path ="D:\software\geckodriver-v0.30.0-win64\")

修改為:

     browser = webdriver.Firefox(executable_path ="D:\software\geckodriver-v0.30.0-win64\geckodriver.exe")

 

 

 下面示例失敗:

from selenium import webdriver
import time

browser = webdriver.Firefox(executable_path ="D:\software\geckodriver-v0.30.0-win64\geckodriver.exe")

get_html = "test.html"
# 打開文件,准備寫入
f = open(get_html, 'wb')
url = 'https://www.baidu.com/'  # 這里填你要保存的網頁的網址
browser.get(url)
time.sleep(2)  # 保證瀏覽器響應成功后再進行下一步操作
# 寫入文件
f.write(browser.page_source.encode("gbk", "ignore"))  # 忽略非法字符
print('寫入成功')
# 關閉文件
f.close()

 

 示例,把百度的首頁保存,保存html (成功)

from selenium import webdriver
import time

browser = webdriver.Firefox(executable_path ="D:\software\geckodriver-v0.30.0-win64\geckodriver.exe")

get_html = "test2.html"
# 打開文件,准備寫入
f = open(get_html, "w", encoding='utf-8')
url = 'https://www.baidu.com/'  # 這里填你要保存的網頁的網址
browser.get(url)
time.sleep(2)  # 保證瀏覽器響應成功后再進行下一步操作
# 寫入文件
f.write(browser.page_source)  # 忽略非法字符
print('寫入成功')
# 關閉文件
f.close()

 

 

 

REF

https://blog.csdn.net/weixin_40822925/article/details/106973803

https://blog.csdn.net/weixin_36279318/article/details/79475388


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM