GitHub 熱門:各大網站的 Python 爬蟲登入彙總
(給Python開發者加星標,提升Python技能)
編譯:機器之心,作者:CriseLYJ
不論是自然語言處理還是計算機視覺,做機器學習演算法總會存在資料不足的情況,而這個時候就需要我們用爬蟲獲取一些額外資料。這個專案介紹瞭如何用 Python 登入各大網站,並用簡單的爬蟲獲取一些有用資料,目前該專案已經提供了知乎、B 站、和豆瓣等 18 個網站的登入方法。
專案地址:https://github.com/CriseLYJ/awesome-python-login-model
作者收集了一些網站的登陸方式和爬蟲程式,有的通過 selenium 登入,有的則通過抓包直接模擬登入。作者希望該專案能幫助初學者學習各大網站的模擬登陸方式,並爬取一些需要的資料。
作者表示模擬登陸基本採用直接登入或者使用 selenium+webdriver 的方式,有的網站直接登入難度很大,比如 qq 空間和 bilibili 等,採用 selenium 登入相對輕鬆一些。雖然在登入的時候採用的是 selenium,但為了效率,我們也可以在登入後維護得到的 cookie。登入後,我們就能呼叫 requests 或者 scrapy 等工具進行資料採集,這樣資料採集的速度可以得到保證。
目前已經完成的網站有:
Facebook
無需身份驗證即可抓取 Twitter 前端 API
微博網頁版
知乎
QQZone
CSDN
淘寶
Baidu
果殼
JingDong 模擬登入和自動申請京東試用
163mail
拉鉤
Bilibili
豆瓣
Baidu2
獵聘網
微信網頁版登入並獲取好友列表
Github
爬取圖蟲相應的圖片
如下所示,如果我們滿足依賴項,那麼就可以直接執行程式碼,它會在圖蟲網站中下載搜尋到的影象。
如下所示為搜尋「秋天」,並完成下載的影象:
每一個網站都會有對應的登入程式碼,有的還有資料的爬取程式碼。以豆瓣為例,主要的登入函式如下所示,它會獲取驗證碼、處理驗證碼、返回登入資料完成登入,並最後保留 cookies。
def login():
captcha, captcha_id = get_captcha()
# 增加表資料
datas['captcha-solution'] = captcha
datas['captcha-id'] = captcha_id
login_page = session.post(url, data=datas, headers=headers)
page = login_page.text
soup = BeautifulSoup(page, "html.parser")
result = soup.findAll('div', attrs={'class': 'title'})
#進入豆瓣登陸後頁面,列印熱門內容
for item in result:
print(item.find('a').get_text())
# 儲存 cookies 到檔案,
# 下次可以使用 cookie 直接登入,不需要輸入賬號和密碼
session.cookies.save()
其中獲取並解決驗證碼的函式如下:
def get_captcha():
'''
獲取驗證碼及其ID
'''
r = requests.post(url, data=datas, headers=headers)
page = r.text
soup = BeautifulSoup(page, "html.parser")
# 利用bs4獲得驗證碼圖片地址
img_src = soup.find('img', {'id': 'captcha_image'}).get('src')
urlretrieve(img_src, 'captcha.jpg')
try:
im = Image.open('captcha.jpg')
im.show()
im.close()
except:
print('到本地目錄開啟captcha.jpg獲取驗證碼')
finally:
captcha = input('please input the captcha:')
remove('captcha.jpg')
captcha_id = soup.find(
'input', {'type': 'hidden', 'name': 'captcha-id'}).get('value')
return captcha, captcha_id
當然這些都是簡單的演示,在 GitHub 專案中可以找到更多的示例。此外,作者表明由於網站策略或者樣式改變而導致程式碼失效,我們也可以提 Issue 或 Pull Requests。最後,該專案未來還會一直維護,很多東西哦也會慢慢改進,專案作者表明:
專案寫了一段時間後,發現程式碼風格、程式易用性、可擴充套件性、程式碼的可讀性,都存在一定的問題,所以接下來最重要的是重構程式碼,讓大家可以更容易的做出一些自己的小功能;
如果讀者覺得某個網站的登入很有代表性,可以在專案 issue 中提出;
網站的登入機制有可能經常的變動,所以當現在的模擬的登入的規則不能使用的時候,請專案在 issue 中提出。
推薦閱讀
(點選標題可跳轉閱讀)
覺得本文對你有幫助?請分享給更多人
關注「Python開發者」加星標,提升Python技能
喜歡就點一下「好看」唄~
相關文章
- Python 爬蟲模擬登入方法彙總Python爬蟲
- Python爬蟲入門【4】:美空網未登入圖片爬取Python爬蟲
- Python爬蟲入門教程 2-100 妹子圖網站爬取Python爬蟲網站
- laravel+queryList爬蟲各大桌布網站,打造自己的桌布網站Laravel爬蟲網站
- Python爬蟲入門Python爬蟲
- 【總結】10款Python爬蟲框架!Python入門Python爬蟲框架
- Python爬蟲入門教程 4-100 美空網未登入圖片爬取Python爬蟲
- Python 網路爬蟲的常用庫彙總及應用Python爬蟲
- Python網路爬蟲4 - scrapy入門Python爬蟲
- 如何使用robots禁止各大搜尋引擎爬蟲爬取網站爬蟲網站
- 如何用Python爬取需要登入的網站?Python網站
- python-爬蟲入門Python爬蟲
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞Python爬蟲網頁網站
- python 爬蟲網頁登陸Python爬蟲網頁
- Python爬蟲入門【9】:圖蟲網多執行緒爬取Python爬蟲執行緒
- 【爬蟲】python爬蟲從入門到放棄爬蟲Python
- 什麼是Python爬蟲?python爬蟲入門難嗎?Python爬蟲
- Python爬蟲教程-13-爬蟲使用cookie爬取登入後的頁面(人人網)(下)Python爬蟲Cookie
- Python爬蟲教程-12-爬蟲使用cookie爬取登入後的頁面(人人網)(上)Python爬蟲Cookie
- Python爬蟲入門【3】:美空網資料爬取Python爬蟲
- 爬蟲入門基礎-Python爬蟲Python
- python3 爬蟲入門Python爬蟲
- 【彙總】Python爬蟲常見面試題!Python爬蟲面試題
- 使用 nodejs 寫爬蟲(二): 抓取 github 熱門專案NodeJS爬蟲Github
- Python網路爬蟲實戰(一)快速入門Python爬蟲
- python爬蟲如何用session保持登入?Python爬蟲Session
- Python爬蟲—爬取某網站圖片Python爬蟲網站
- 不踩坑的Python爬蟲:Python爬蟲開發與專案實戰,從爬蟲入門 PythonPython爬蟲
- 為什麼學習python及爬蟲,Python爬蟲[入門篇]?Python爬蟲
- Python爬蟲入門,8個常用爬蟲技巧盤點Python爬蟲
- python爬蟲 之 BeautifulSoup庫入門Python爬蟲
- Python3爬蟲入門(一)Python爬蟲
- Python爬蟲入門【7】: 蜂鳥網圖片爬取之二Python爬蟲
- Python爬蟲入門【8】: 蜂鳥網圖片爬取之三Python爬蟲
- Python爬蟲入門【6】:蜂鳥網圖片爬取之一Python爬蟲
- Python爬蟲入門教程 50-100 Python3爬蟲爬取VIP視訊-Python爬蟲6操作Python爬蟲
- 爬蟲入門爬蟲
- Python爬蟲入門【5】:27270圖片爬取Python爬蟲