Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
__ztr
Python 爬虫120例
提交
a30c1d3c
Python 爬虫120例
项目概览
__ztr
/
Python 爬虫120例
与 Fork 源项目一致
Fork自
梦想橡皮擦 / Python 爬虫120例
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Python 爬虫120例
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
a30c1d3c
编写于
9月 05, 2021
作者:
梦想橡皮擦
💬
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
外国网站排行榜
上级
a14ac74f
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
83 addition
and
0 deletion
+83
-0
NO30/单线程版本.py
NO30/单线程版本.py
+18
-0
NO30/多线程版本.py
NO30/多线程版本.py
+65
-0
未找到文件。
NO30/单线程版本.py
0 → 100644
浏览文件 @
a30c1d3c
from
requests_html
import
HTMLSession
session
=
HTMLSession
()
page_size
=
int
(
input
(
"请输入总页码:"
))
for
page
in
range
(
1
,
page_size
+
1
):
world
=
session
.
get
(
f
'http://www.world68.com/top.asp?t=5star&page=
{
page
}
'
)
world
.
encoding
=
'gb2312'
# world.html.encoding = "gb2312"
# print(world.text)
print
(
"正在采集数据"
,
world
.
url
)
title_a
=
world
.
html
.
find
(
'dl>dt>a'
)
for
item
in
title_a
:
name
=
item
.
text
url
=
item
.
attrs
[
'href'
]
with
open
(
'webs1.txt'
,
"a+"
,
encoding
=
"utf-8"
)
as
f
:
f
.
write
(
f
"
{
name
}
,
{
url
}
\n
"
)
NO30/多线程版本.py
0 → 100644
浏览文件 @
a30c1d3c
import
requests_html
import
threading
import
time
import
fcntl
class
MyThread
(
threading
.
Thread
):
def
__init__
(
self
):
threading
.
Thread
.
__init__
(
self
)
def
run
(
self
):
global
page
,
lock
,
page_size
while
True
:
lock
.
acquire
(
True
)
if
page
>=
page_size
:
lock
.
release
()
break
else
:
page
+=
1
lock
.
release
()
requests_html
.
DEFAULT_ENCODING
=
"gb18030"
session
=
requests_html
.
HTMLSession
()
print
(
"正在采集第{}页"
.
format
(
page
),
"*"
*
50
)
try
:
page_url
=
f
'http://www.world68.com/top.asp?t=5star&page=
{
page
}
'
world
=
session
.
get
(
page_url
,
timeout
=
10
)
print
(
"正在采集数据"
,
world
.
url
)
# print(world.html)
title_a
=
world
.
html
.
find
(
'dl>dt>a'
)
print
(
title_a
)
my_str
=
""
for
item
in
title_a
:
name
=
item
.
text
url
=
item
.
attrs
[
'href'
]
my_str
+=
f
"
{
name
.
encode
(
'utf-8'
).
decode
(
'utf-8'
)
}
,
{
url
}
\n
"
with
open
(
'thread_webs.txt'
,
"a+"
,
encoding
=
"utf-8"
)
as
f
:
fcntl
.
flock
(
f
.
fileno
(),
fcntl
.
LOCK_EX
)
# 文件加锁
f
.
write
(
f
"
{
my_str
}
"
)
except
Exception
as
e
:
print
(
e
,
page_url
)
if
"__main__"
==
__name__
:
page_size
=
int
(
input
(
"请输入总页码:"
))
page
=
0
thread_list
=
[]
# 获取开始时间
start
=
time
.
perf_counter
()
lock
=
threading
.
Lock
()
for
i
in
range
(
1
,
5
):
t
=
MyThread
()
thread_list
.
append
(
t
)
for
t
in
thread_list
:
t
.
start
()
for
t
in
thread_list
:
t
.
join
()
# 获取时间间隔
elapsed
=
(
time
.
perf_counter
()
-
start
)
print
(
"程序运行完毕,总耗时为:"
,
elapsed
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录