【爬蟲】問題集-豆瓣電影

【爬蟲】問題集-豆瓣電影

本文章用於豆瓣電影爬取信息過程中出現的問題
全部內容見筆者的github

問題1 pip install numpy命令行輸入的時候報錯 OSError: [WinError 87] 參數錯誤

  1. 場景

    • 用conda創建一個虛擬的環境:conda create -n scrapy python=3
  2. 問題

    • 運行爬蟲代碼時,出現 OSError: [WinError 87] The parameter is incorrect
  3. 描述

    • python=3默認安裝3.8,有些python庫並不支持python3.8
  4. 解決方案

    • conda create -n scrapy python=3.7

問題2 WebDriverException: Message: unknown error: bad inspector message

  1. 場景

    • 用python,selenium構建爬蟲獲取網頁信息,並用xpath進行頁面內容解析
    • url: https://movie.douban.com/subject/3878007/
  2. 問題

    • webdriver能加載網站,但不能正確返回頁面內容

WebDriverException: Message: unknown error: bad inspector message
in
3 driver = webdriver.Chrome(options=chrome_options)
4 driver.get(url)
----> 5 html = driver.page_source
UnicodeEncodeError: ‘utf-8’ codec can’t encode character ‘\ud83d’ in position 76660: surrogates not allowed
html = HTML(url=self.url, html=content.encode(DEFAULT_ENCODING), default_encoding=DEFAULT_ENCODING)

  1. 描述

    • 爬蟲在爬取頁面中含有emoji字符串時不能正確返回html
    • driver.page_source編碼使用的是utf-8,其最大的一個字符是3個字節,而emoji存儲需要4個字節
  2. 解決方案

    • 不返回page_source,直接通過find_element_by_xpath來獲取內容
    • 使用requests獲取頁面內容

問題3 如何獲取字符串相同名稱的變量值

  1. 場景

    • 爬蟲獲取相應信息後,將變量值添加到DataFrame
  2. 問題

    • 獲取字符串相同名稱的變量值
  3. 描述

    • 爬取內容時,將需要獲取的信息以字符串的形式存儲在可迭代的數據結構中,需要用時通過循環訪問可迭代數據結構即可
  4. 解決方案

    • 用python內置的eval()函數,例如eval(‘egg’)返回egg變量的值

問題4 chrome添加參數

from selenium.webdriver.chrome.options import Options
from fake_useragent import UserAgent

chrome_options = Options()
ua = UserAgent()
user_agent = {“user-agent”: ua.random}

chrome_options.add_argument(f’–user-agent={user_agent}’) # 添加請求頭中的用戶代理
chrome_options.add_argument(’–disable-gpu’) # 禁用GPU
chrome_options.add_argument(’–headless’) # 無圖形界面
chrome_options.add_argument(’–blink-settings=imagesEnabled=false’) # 禁止圖片加載
chrome_options.add_argument(’–window-size=800,900’) # 設定屏幕分辨率
chrome_options.add_experimental_option(‘excludeSwitches’, [‘enable-automation’]) # 設定瀏覽器調控模式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章