日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

03.获取网页源代码

發(fā)布時(shí)間:2023/12/18 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 03.获取网页源代码 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

主要內(nèi)容

  • Resquests 庫獲取網(wǎng)頁源代碼
  • 使用 Selenium 庫獲取網(wǎng)頁源代碼
  • 使用requests 庫 和 Selenium 庫爬取網(wǎng)頁的優(yōu)缺點(diǎn)
  • 一、Resquests 庫獲取網(wǎng)頁源代碼

    1.1 使用Requests 庫獲取百度新聞的網(wǎng)頁源代碼

    • 具體代碼:

      import requests url = 'https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=阿里巴巴' res = requests.get(url).text print(res)
    • 獲取到的網(wǎng)頁源代碼:

      <html> <head><script>location.replace(location.href.replace("https://","http://"));</script> </head> <body><noscript><meta http-equiv="refresh" content="0;url=http://www.baidu.com/"></noscript> </body> </html>
    • 可以看到?jīng)]有獲取到真正的網(wǎng)頁源代碼,這是因?yàn)榘俣刃侣劸W(wǎng)站只認(rèn)可瀏覽器發(fā)送的訪問請求,不認(rèn)可Python發(fā)送的訪問請求。

      • 解決方案:此時(shí)需要通過設(shè)置requests.get()函數(shù)的參數(shù)headers,以模擬瀏覽器進(jìn)行訪問。

        headers = {"User-Agent":"Mozilla / 5.0(WindowsNT10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 103.0.5060.114Safari / 537.36Edg / 103.0.1264.62"}

    1.2 改進(jìn)版——模擬瀏覽器獲取真實(shí)網(wǎng)址源代碼

    • 實(shí)現(xiàn)代碼:

      import requests url = 'https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=阿里巴巴' headers = {"User-Agent":"Mozilla / 5.0(WindowsNT10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 103.0.5060.114Safari / 537.36Edg / 103.0.1264.62"} res = requests.get(url,headers=headers).text print(res)

    1.3 關(guān)于 參數(shù) headers 具體介紹

    • 參數(shù)headers用于向網(wǎng)站提供訪問者的信息,其中的User-Agent(用戶代理)反映了訪問者使用的是哪種瀏覽器

    • 雖然有時(shí)不加headers也能獲得網(wǎng)頁的源代碼(如爬取Python官網(wǎng)),但是headers的設(shè)置和使用并不麻煩,而且可以避免可能會(huì)出現(xiàn)的爬取失敗,所以還是建議加上headers。

    • 每次只需要只要記得在爬蟲程序的最前面寫上如下代碼:

      headers = {"User-Agent":"Mozilla / 5.0(WindowsNT10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 103.0.5060.114Safari / 537.36Edg / 103.0.1264.62"}
      • 然后每次使用requests.get()函數(shù)訪問網(wǎng)址時(shí),加上headers=headers參數(shù)即可

    1.4 Requests庫的缺點(diǎn)

    • 使用requests 庫獲取的是未經(jīng)渲染的網(wǎng)頁源代碼,如果用它來爬取動(dòng)態(tài)渲染的網(wǎng)頁,就往往爬取不斷我們想要的結(jié)果

    • 快速驗(yàn)證網(wǎng)頁是否被動(dòng)態(tài)渲染的方法:

      • 右鍵快捷菜單查看網(wǎng)頁源代碼 ,若看到的網(wǎng)頁源代碼內(nèi)容很少,也不包含用開發(fā)者工具能看到的信息,就可以判定用開發(fā)者工具看到的網(wǎng)頁源代碼是動(dòng)態(tài)渲染后的結(jié)果
    • 要從經(jīng)過動(dòng)態(tài)渲染的網(wǎng)頁中爬取數(shù)據(jù)的辦法:

      • 需要使用Selenium庫打開一個(gè)模擬器訪問網(wǎng)頁,然后獲取渲染后的網(wǎng)頁源代碼

    二、使用 Selenium 庫獲取網(wǎng)頁源代碼

    2.1 模擬瀏覽器以及Selenium 庫的安裝

    • 要使用Selenium庫爬取數(shù)據(jù),除了需要為Python安裝Selenium庫,還需要安裝一個(gè)模擬瀏覽器(詳細(xì)安裝步驟看博客4)。Selenium庫控制這個(gè)模擬瀏覽器去訪問網(wǎng)頁,才能獲取網(wǎng)頁源代碼。

    2.2 獲取網(wǎng)頁源代碼

    • 使用Selenium庫獲取新浪財(cái)經(jīng)股票信息

      import time from selenium import webdriver browser = webdriver.Chrome() browser.get('https://finance.sina.com.cn/stock/') data = browser.page_source # 核心代碼 print(data) time.sleep(1000)
    • 使用下面的代碼,就能關(guān)閉模擬瀏覽器

      browser.quit()

    三、使用requests 庫 和 Selenium 庫爬取網(wǎng)頁的優(yōu)缺點(diǎn)

    • 因?yàn)镽equests庫是直接訪問網(wǎng)頁,爬取速度非常快;而Selenium庫要先打開模擬瀏覽器再訪問網(wǎng)頁,導(dǎo)致爬取速度較慢
    • 如果說Requests庫可以爬取50%的網(wǎng)站,那么Selenium庫可以爬取95%的網(wǎng)站,大部分爬取難度較高的網(wǎng)站都可以用Selenium庫獲取網(wǎng)頁源代碼
    • 實(shí)戰(zhàn)中通常將這兩個(gè)庫結(jié)合使用,實(shí)現(xiàn)優(yōu)勢互補(bǔ):如果用Requests庫能獲取到需要的網(wǎng)頁源代碼,那么優(yōu)先使用Requests庫進(jìn)行爬取;如果用Requests庫獲取不到,再使用Selenium庫進(jìn)行爬取。

    如果覺得文章不錯(cuò),可以給我點(diǎn)贊鼓勵(lì)一下我,歡迎收藏
    關(guān)注我,我們一起學(xué)習(xí),一起進(jìn)步!!!

    總結(jié)

    以上是生活随笔為你收集整理的03.获取网页源代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。