爬蟲會用到的小工具: LazySpider 發布啦!
lazyspider 並不是一個爬蟲框架
他只是一個寫爬蟲時經常會用到的小工具這是我實習的時候寫了一個多月爬蟲,期間遇到的一些坑,
想著有沒有比較好的方式來解決,
於是lazyspider
就誕生啦!名字是女票給起的,感覺還不錯hhh~
功能介紹
其實目前也就實現了兩個功能
- 將chrome瀏覽器的里
cookie/header
格式化為dict
格式,方便調用 - 將
pymysql
再次封裝了一層,做到了基本的增刪改查
所以目前lazy里也只有兩個小模塊:
- lazyheaders
- lazystore
安裝
直接用pip安裝就可以
僅支持py3~
pip install lazyspier
使用說明
lazyspider
用起來十分簡單
lazyheaders
主要用于格式化cookies 和headers
源字元串來自chrome開發工具頁面請求的 Copy -> Copy as cURL
:
複製好原始字元串之後:
from lazyspider.lazyheaders import LazyHeaders# 注意!字元串要包裹在 三引號 或 雙引號 里curl = "curl "https://pypi.python.org/pypi" -H "cookie: .....balabala...."lh = LazyHeaders(curl)headers = lh.getHeaders()cookies = lh.getCookies()print("*" * 40)print("Headers: {}".format(headers))print("*" * 40)print("Cookies: {}".format(cookies))print("*" * 40)import requestsr = requests.get("https://pypi.python.org/pypi", headers=headers, cookies=cookies)print(r.status_code)
輸出如下:
****************************************Headers: {"origin": "https", "accept-encoding": "gzip,deflate,br", "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,mt;q=0.7", "upgrade-insecure-requests": "1", "user-agent": "Mozilla/5.0(Macintosh;IntelMacOSX10_13_2)AppleWebKit/537.36(KHTML,likeGecko)Chrome/63.0.3239.84Safari/537.36", "content-type": "", "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", "cache-control": "max-age=0", "authority": "pypi.python.org", "referer": "https"}****************************************Cookies: {"__utma": "32101439.146958433.1508462081.1509339065.1512998855.2", "__utmz": "32101439.1512998855.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided)", "_ga": "GA1.2.146958433.1508462081", "_gid": "GA1.2.555764366.1513659919", "login_nonce": "V649T4tBPTqQmg87ElGoHXQFviJkoz", "pypi": "520cfc4475316b0c3fc41091af563886"}****************************************200
是不是很方便呢?
lazystore
目前只封裝了mysql
的操作,用法也簡單
初始化資料庫連接
from lazyspider.lazystore import LazyMysql# 資料庫配置TEST_DB = { "host": "127.0.0.1", "user": "root", "password": "xxx", "db": "EhcoTestDb"}# 初始化資料庫鏈接store = LazyMysql(TEST_DB)
保存數據
# 將要保存的數據以字典格式存儲data = {"id": 1, "name": "ehco", "age": 20}# 新增數據的方法# 只需要傳入 數據<dict> 表名 兩個參數state = store.save_one_data(data, "testtable")print(state)# 數據保存成功會返回1# 保存失敗會返回-1 並列印錯誤堆棧>>1
刪除數據
# 這裡我將id為1的數據刪除state = store.delete_by_field("testtable","id","1")print (state)>>1
更新數據
# 這裡我更新id為1的name欄位data = {"id": 1, "name": "superehco", "age": 20}state = store.update_by_id(data, "testtable", "1")print(state)>>1
查詢數據
# 這裡我更新id為1的name欄位res = store.find_by_field("testtable", "age", "20")print(res)# 返回的是一個列表,每條查詢記錄都以字典格式返回"""[{"id": 1, "name": "superehco", "age": 20}, {"id": 2, "name": "lurenjia", "age": 20}]"""
SQL語句查詢
# 手擼sql也是必備的sql = "select * from testtable"res = store.query(sql)print(res)"""[{"id": 1, "name": "superehco", "age": 20}, {"id": 2, "name": "lurenjia", "age": 20}]"""
結語
目前也就做了這兩個非常小的功能,
但這些都是我在平日里工作中每天都需要打交道的地方大家有什麼好的想法可以一起開發~
該項目已經放在GitHub上啦地址:https://github.com/Ehco1996/lazySpider最後求個Star不過分吧~
推薦閱讀:
※有沒有比較好的銀行理財產品資料庫?
※TiDB Best Practice
※爬取知乎60萬用戶信息之後的簡單分析
※MySQL小巧而強大的管理工具
※圖解 SQL 里的各種 JOIN