Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦想橡皮擦
Python 爬虫120例
提交
d5920bea
Python 爬虫120例
项目概览
梦想橡皮擦
/
Python 爬虫120例
通知
6424
Star
761
Fork
392
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Python 爬虫120例
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
d5920bea
编写于
10月 17, 2021
作者:
梦想橡皮擦
💬
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
MyCoser站点爬虫
上级
89d1cfad
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
59 addition
and
1 deletion
+59
-1
NO38/new_imgs/1632486604.0140002.jpg
NO38/new_imgs/1632486604.0140002.jpg
+0
-0
NO38/麦涩网 MyCoser协程爬虫.py
NO38/麦涩网 MyCoser协程爬虫.py
+58
-0
README.md
README.md
+1
-1
未找到文件。
NO38/new_imgs/1632486604.0140002.jpg
0 → 100644
浏览文件 @
d5920bea
565.6 KB
NO38/麦涩网 MyCoser协程爬虫.py
0 → 100644
浏览文件 @
d5920bea
import
threading
import
asyncio
import
time
import
requests
import
lxml
from
bs4
import
BeautifulSoup
async
def
get
(
url
):
return
requests
.
get
(
url
)
async
def
get_html
(
url
):
print
(
"准备抓取:"
,
url
)
res
=
await
get
(
url
)
return
res
.
text
async
def
save_img
(
img_url
):
# thumbMid_5ae3e05fd3945 将小图替换为大图
img_url
=
img_url
.
replace
(
'thumb'
,
'thumbMid'
)
img_url
=
"http://mycoser.com/"
+
img_url
print
(
"图片下载中:"
,
img_url
)
res
=
await
get
(
img_url
)
if
res
is
not
None
:
with
open
(
f
'./new_imgs/
{
time
.
time
()
}
.jpg'
,
'wb'
)
as
f
:
f
.
write
(
res
.
content
)
return
img_url
,
"ok"
async
def
main
(
url_list
):
# 创建 5 个任务
tasks
=
[
asyncio
.
ensure_future
(
get_html
(
url_list
[
_
]))
for
_
in
range
(
len
(
url_list
))]
dones
,
pending
=
await
asyncio
.
wait
(
tasks
)
for
task
in
dones
:
html
=
task
.
result
()
soup
=
BeautifulSoup
(
html
,
'lxml'
)
divimg_tags
=
soup
.
find_all
(
attrs
=
{
'class'
:
'workimage'
})
for
div
in
divimg_tags
:
ret
=
await
save_img
(
div
.
a
.
img
[
"data-original"
])
print
(
ret
)
if
__name__
==
'__main__'
:
urls
=
[
f
"http://mycoser.com/picture/lists/p/
{
page
}
"
for
page
in
range
(
1
,
17
)]
totle_page
=
len
(
urls
)
//
5
if
len
(
urls
)
%
5
==
0
else
len
(
urls
)
//
5
+
1
# 对 urls 列表进行切片,方便采集
for
page
in
range
(
0
,
totle_page
):
start_page
=
0
if
page
==
0
else
page
*
5
end_page
=
(
page
+
1
)
*
5
# 循环事件对象
# loop = asyncio.get_event_loop()
#
# loop.run_until_complete(main(urls[start_page:end_page]))
asyncio
.
run
(
main
(
urls
[
start_page
:
end_page
]))
README.md
浏览文件 @
d5920bea
...
...
@@ -78,7 +78,7 @@
### 📙 协程学习
37.
[
python 爬虫爱好者必须掌握的知识点“ 协程爬虫”,看一下如何用 gevent 采集女生用头像
](
https://dream.blog.csdn.net/article/details/120421824
)
38.
麦涩网 MyCoser|cosplay 采集,asyncio 库学习
38.
[
python协程总学不会?不可能的,边学协程边采集Coser图吧!
](
https://dream.blog.csdn.net/article/details/120445004
)
39.
中少绘本 MP4 视频采集,asyncio 协程第3篇
40.
Bensound 站 MP3 采集,asyncio + aiohttp 协程第4篇
41.
历史剧网采集,协程并发控制
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录