【爬蟲】問題集-豆瓣電影
文章目錄
本文章用於豆瓣電影爬取信息過程中出現的問題
全部內容見筆者的github
問題1 pip install numpy命令行輸入的時候報錯 OSError: [WinError 87] 參數錯誤
-
場景
- 用conda創建一個虛擬的環境:
conda create -n scrapy python=3
- 用conda創建一個虛擬的環境:
-
問題
- 運行爬蟲代碼時,出現
OSError: [WinError 87] The parameter is incorrect
- 運行爬蟲代碼時,出現
-
描述
- python=3默認安裝3.8,有些python庫並不支持python3.8
-
解決方案
- conda create -n scrapy python=3.7
問題2 WebDriverException: Message: unknown error: bad inspector message
-
場景
- 用python,selenium構建爬蟲獲取網頁信息,並用xpath進行頁面內容解析
- url: https://movie.douban.com/subject/3878007/
-
問題
- 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)
-
描述
- 爬蟲在爬取頁面中含有emoji字符串時不能正確返回html
- driver.page_source編碼使用的是utf-8,其最大的一個字符是3個字節,而emoji存儲需要4個字節
-
解決方案
- 不返回page_source,直接通過find_element_by_xpath來獲取內容
- 使用requests獲取頁面內容
問題3 如何獲取字符串相同名稱的變量值
-
場景
- 爬蟲獲取相應信息後,將變量值添加到DataFrame
-
問題
- 獲取字符串相同名稱的變量值
-
描述
- 爬取內容時,將需要獲取的信息以字符串的形式存儲在可迭代的數據結構中,需要用時通過循環訪問可迭代數據結構即可
-
解決方案
- 用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’]) # 設定瀏覽器調控模式