在我爬蟲的過程中,遇到的主要問題有:有一些網頁鏈接似乎有重定向功能,獲取到的並不是真實的源碼;還有一些網站對ip的限制特別嚴重……
關於後者,我找過一些免費的ip網站如西刺,但是那些ip大多數都不能用(´゚д゚`)
這裏順便貼一下關於配置ip的代碼。
# 代理鏈表
proxy_list = []
with open("data/proxy.txt") as file:
for line in file.readlines():
proxy_list.append(line.strip())
And then.....
html = s.get(url, headers=header, proxies=proxies)
後面我對付封ip的爬蟲問題時主要用了 selenium模擬用戶訪問行爲+隨機的睡眠時間。
selenium是一個自動化的測試工具,運行它的時候相應的瀏覽器會自動打開並進行操作(鍵入關鍵詞、點擊、跳轉等等)。這裏我用的是谷歌瀏覽器。
下載過程:
1、首先查一下自己谷歌瀏覽器的版本
2、查找對應的chromeDriver版本並下載
鏈接: http://npm.taobao.org/mirrors/chromedriver/
3、一開始我將chromeDrive-xx.exe放置到了python的script文件夾 和 谷歌瀏覽器的Application文件夾下,並將該文件夾(Application)的路徑添加到了環境變量path中,但是程序調用的時候一直有各種問題,後來我將執行文件直接放置在Python文件夾下,就ok了
selenium示例代碼:
from selenium import webdriver
import time
import random
options = webdriver.ChromeOptions()
options.add_argument('user-agent="Mozilla/5.0 (iPod; U; CPU iPhone OS 2_1 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F137 Safari/525.20"')
browser = webdriver.Chrome(chrome_options=options)
browser.implicitly_wait(3)
try:
browser.get("url")
time.sleep(5+random.randint(1,9))
title = browser.title
print(title)
except:
pass
同時我發現,運行selenium程序的時候最好還是把那個自動運行的瀏覽器開着,就是不要最小化它,否則容易停掉(個人經驗個人愚見,,Ծ‸Ծ,,)