牛逼!用 Python 登錄主流網(wǎng)站,這個Github 13K點贊的項目火爆了!
點上方“菜鳥學Python”,選擇“星標”
450篇原創(chuàng)干貨,第一時間送達

機器之心編輯
不論是自然語言處理還是計算機視覺,做機器學習算法總會存在數(shù)據(jù)不足的情況,而這個時候就需要我們用爬蟲獲取一些額外數(shù)據(jù)。這個項目介紹了如何用 Python 登錄各大網(wǎng)站,并用簡單的爬蟲獲取一些有用數(shù)據(jù),目前該項目已經(jīng)提供了知乎、B 站、和豆瓣等 18 個網(wǎng)站的登錄方法。
項目地址:https://github.com/CriseLYJ/awesome-python-login-model
作者收集了一些網(wǎng)站的登陸方式和爬蟲程序,有的通過 selenium 登錄,有的則通過抓包直接模擬登錄。作者希望該項目能幫助初學者學習各大網(wǎng)站的模擬登陸方式,并爬取一些需要的數(shù)據(jù)。
作者表示模擬登陸基本采用直接登錄或者使用 selenium+webdriver 的方式,有的網(wǎng)站直接登錄難度很大,比如 qq 空間和 bilibili 等,采用 selenium 登錄相對輕松一些。雖然在登錄的時候采用的是 selenium,但為了效率,我們也可以在登錄后維護得到的 cookie。登錄后,我們就能調(diào)用 requests 或者 scrapy 等工具進行數(shù)據(jù)采集,這樣數(shù)據(jù)采集的速度可以得到保證。
目前已經(jīng)完成的網(wǎng)站有:

如下所示,如果我們滿足依賴項,那么就可以直接運行代碼,它會在圖蟲網(wǎng)站中下載搜索到的圖像。

如下所示為搜索「秋天」,并完成下載的圖像:

每一個網(wǎng)站都會有對應的登錄代碼,有的還有數(shù)據(jù)的爬取代碼。以豆瓣為例,主要的登錄函數(shù)如下所示,它會獲取驗證碼、處理驗證碼、返回登錄數(shù)據(jù)完成登錄,并最后保留 cookies。
def login():
captcha, captcha_id = get_captcha()
# 增加表數(shù)據(jù)
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 })
#進入豆瓣登陸后頁面,打印熱門內(nèi)容
for item in result:
print(item.find( a ).get_text())
# 保存 cookies 到文件,
# 下次可以使用 cookie 直接登錄,不需要輸入賬號和密碼
session.cookies.save()
其中獲取并解決驗證碼的函數(shù)如下:
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 項目中可以找到更多的示例。此外,作者表明由于網(wǎng)站策略或者樣式改變而導致代碼失效,我們也可以提 Issue 或 Pull Requests。最后,該項目未來還會一直維護,很多東西哦也會慢慢改進,項目作者表明:
項目寫了一段時間后,發(fā)現(xiàn)代碼風格、程序易用性、可擴展性、代碼的可讀性,都存在一定的問題,所以接下來最重要的是重構代碼,讓大家可以更容易的做出一些自己的小功能;
如果讀者覺得某個網(wǎng)站的登錄很有代表性,可以在項目 issue 中提出;
網(wǎng)站的登錄機制有可能經(jīng)常的變動,所以當現(xiàn)在的模擬的登錄的規(guī)則不能使用的時候,請項目在 issue 中提出。
推薦閱讀:
入門: 最全的零基礎學Python的問題 | 零基礎學了8個月的Python | 實戰(zhàn)項目 |學Python就是這條捷徑
干貨:爬取豆瓣短評,電影《后來的我們》 | 38年NBA最佳球員分析 | 從萬眾期待到口碑撲街!唐探3令人失望 | 笑看新倚天屠龍記 | 燈謎答題王 |用Python做個海量小姐姐素描圖 |
趣味:彈球游戲 | 九宮格 | 漂亮的花 | 兩百行Python《天天酷跑》游戲!
AI: 會做詩的機器人 | 給圖片上色 | 預測收入 | 碟中諜這么火,我用機器學習做個迷你推薦系統(tǒng)電影
年度爆款文案
