python登录网站后爬取数据_用 Python 登录主流网站,我们的数据爬取少不了它
不論是自然語言處理還是計算機視覺,做機器學習算法總會存在數據不足的情況,而這個時候就需要我們用爬蟲獲取一些額外數據。這個項目介紹了如何用 Python 登錄各大網站,并用簡單的爬蟲獲取一些有用數據,目前該項目已經提供了知乎、B 站、和豆瓣等 18 個網站的登錄方法。項目作者:CriseLYJ。
作者收集了一些網站的登陸方式和爬蟲程序,有的通過 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 登录主流网站,我们的数据爬取少不了它的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jmh气象传真图网站_在冬奥滑雪场,他凭
- 下一篇: python多线程队列和池_Python