爬蟲會用到的小工具: 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上啦

地址:github.com/Ehco1996/laz

最後求個Star不過分吧~


推薦閱讀:

有沒有比較好的銀行理財產品資料庫?
TiDB Best Practice
爬取知乎60萬用戶信息之後的簡單分析
MySQL小巧而強大的管理工具
圖解 SQL 里的各種 JOIN

TAG:爬虫计算机网络 | Cookie | 数据库 |