Python爬虫小工具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 requests
r = 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 不过分吧~
Python爬虫小工具LazySpider发布啦!
emmm… postman 可以完成你的第一个功能
我无法理解你的问题。
没有用过耶 明天去试试
之前总结了一些好用的爬虫工具,顺便贴下……
https://www.kawabangga.com/posts/2365
😓这种东西优化好再拿出来吧
这是个神器。一直在用
不错~MySQL 的这个封装给了我一些启发 刚好最近操作得比较烦~
不错,正需要
不错耶 谢谢
什么意思 哪里有 bug 了
哈哈可以把常用的数据库操作都封装一下 这样用起来就很方便了
好像,切文本这种,一行 lamda 就实现了
我的意思是做的稍微像点样了再拿出来,写了两个函数就拿出来有点不像话了。
http header to list
还一个 mysql 的,你不知道装个 ORM 吗
还是我给那个 iOCR 的评论,小儿科的东西不要往外拿。
支持楼主 谁不是新手来的
不喜欢
觉得低级可以不用啊
我求着你用了?
我写什么是我的自由吧 和你有关系吗?
真不知道哪这么大抱怨
谢谢支持!
学习了!
如果你看看 npm 社区的 package,再看看楼主的…hmm
我是支持楼主的,哪有什么一开始就做得很完善的东西,楼主善于把重复劳动整理成代码然后再分享出来就已经是很赞的了。至于已经有些成熟的工具有了相应的功能,程序员嘛,不都是喜欢重复造各种轮子嘛
另外你如果觉得楼主的代码不好,可以优化,那你可以提 pr 或者 issue 啊,这是楼主改进的动力,talk is cheap, show me the code.
项目刚开始都不是十全十美了,后期慢慢迭代就好。支持
又黑我前端
其实 pypi 包写上一次就知道没那么难了…
其实看看代码我觉得还好…但 SQL 注入是无法防止的…每个 CRUD 后面的代码都是重复的,可以用 query() 直接简化喵 LZ 能解释一下你为什么写 query() 这个函数却不用吗? LZ 不是没写而是写了却没有用啊…?为什么会写了却没用?…
GWU 现在还没回我…
美国人效率确实不高,需要帮忙的话可以联系我
嗯,谢啦:D 不过看一亩三分地最近的形势,也在考虑还是换个地方比较好? fresh grad 太不友好了 quq
谢谢 ,我是最后才写 query 的…一开始先写了 CURD 操作。你不说我还真想不起来…我去改一下
其实还可以统一一下两个包的命名,比如 Python 向就统一下划线吧,headers 文件里就不要用驼峰了。还有 data 是不可数名词…
node 的生态一直是这样的,我也很认同, 但具体到这个项目, 它还依赖 emoji-regex, 他这个项目其实就是一行代码, 用 emoji-regex 判断一下 text.
这个要是我等 publish 出来, 可能会被笑话.
老哥看的真仔细,我都感动了!
我就看了一下…
跟前端不前端关系不大,就是在说 js 的生态而已,你看看 npm 之王 Sindre Sorhus 的这个项目才几行代码 https://github.com/sindresorhus/has-emoji 然而我并不是在批评 Sindre Sorhus, 人家在接受采访的时候明确说了,他只是觉得代码模块就跟乐高一样,把小块小块的组合一下就能有更多的用途 https://medium.freecodecamp.org/sindre-sorhus-8426c0ed785d
这个工具给我一些启发,以后可能会参与吧。
不过真正要用起来的话,我会选择照着源码按自己的方式重写一遍,嵌入到自己的东西里去。
(就是抄一遍……)
谢谢支持哈哈哈
支持楼主,感谢楼主分享。
数据库的增删改查我也正准备自己造一个,这种小轮子自己造一下不挺好吗,不然怎成长

