python爬蟲爬取github全部follwers初級版

這幾天我很焦慮,受不了那些先follow我,等我follow回去後又unfollow的人,由於是他們先follow個人,我出於人道主義想着互粉一下的,結果這麼對我,太不厚道了。github又不像微博那樣有互粉標誌,這真的整得我很心煩,因而想着寫一個爬蟲,把這些「壞人」揪出來~
第一步,固然是放出代碼啦,代碼放在個人github上,歡迎給star:html

https://github.com/laurel-he/...

我是一個python初學者,徹底小白,因此只能用比較蠢的方法來扒,如下是個人步驟:
1 扒取整個頁面python

# -*- coding:UTF-8 -*-
import requests
if __name__ == '__main__':
target = 'https://github.com/laurel-he?tab=followers'
req = requests.get(url=target)
fo = open('1.txt', "ab+")        
fo.write((req.text).encode('UTF-8'))  
fo.close()

以上代碼能夠將整個文件的html扒取下來,接下來找到用戶,在follower裏面隨便找到一個用戶,在剛纔生成的txt文件中搜索,而後就能夠獲得以下匹配:git

data-octo-dimensions="link_type:self". href="/(.?)"

能夠直接匹配出用戶名。
2 根據正則獲取匹配的用戶
剛纔已經把整個頁面扒取下來了,代碼放在spider/follwers/url.py,txt文件效果以下:github

clipboard.png

可是我想要獲取的是全部follwer,以前已經獲得了對應的正則表達式,那麼獲得全部的follwer很容易,最終代碼以下:正則表達式

# -*- coding:UTF-8 -*-
import requests
import re
if __name__ == '__main__':
target = 'https://github.com/laurel-he?tab=followers'
req = requests.get(url=target)
context = req.text
patt = re.compile(r"data-octo-dimensions=\"link_type:self\".*href=\"/(.*?)\"")
ch = patt.findall(req.text)
fo = open('flower.txt',"ab+")
for i in ch:
    line = str(i) + "\n"
    fo.write((line).encode('UTF-8')+b'\r\n')
fo.close

以上代碼能夠直接扒取全部follwers,可是出現了兩遍,由於我這個表達式每一個名字會匹配到兩次,下一版本會更換正則表達式,先將就用吧,而後如法炮製扒取第二頁第三頁,只須要更改連接地址,加上page就能夠,同時也能夠把文件寫入方式變成追加方式,或者乾脆每次都新建一個文件,無所謂,總之最終將全部用戶扒取下來。按照一樣的方式扒取全部的本身follwing的用戶。
這裏注意的是,代碼裏必定要加上換行!換行符不加就是一團亂麻,啥也看不清。
換行符添加後不成功的話試試加上'r',也許就能成功了;
仍是不成功的話看看報錯是否是這個樣子滴:ide

clipboard.png

是的話加上b方法,轉化成byte~
3 接下來是最傻最騷的操做-對比
想要找出來那個沒有follow本身的人,只能進行對比,我目前用了一個很傻的辦法就是新建一個excel文件,按照列粘貼全部數據,而後按照升序或降序排行(兩列排列方式要同樣),而後肉眼來對比!!!url

clipboard.png

其實我仍是以爲我要瞎了,可是真的比起一個個看好多了,之後繼續想更好的辦法,總之我是揪出來那個壞人了。。。可是爲了尊重人家隱私權,好吧,就這樣吧,我也不能作啥。spa

相關文章
相關標籤/搜索