Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Z
zzsn_spider
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
1
合并请求
1
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
丁双波
zzsn_spider
Commits
17a85405
提交
17a85405
authored
1月 25, 2024
作者:
薛凌堃
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
搜狗搜索维护
上级
7bf6c3cf
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
21 行增加
和
10 行删除
+21
-10
sougouSpider.py
sougou_comm/sougouSpider.py
+19
-8
sougoutaskJob_comm.py
sougou_comm/sougoutaskJob_comm.py
+2
-2
没有找到文件。
sougou_comm/sougouSpider.py
浏览文件 @
17a85405
...
...
@@ -105,7 +105,7 @@ class SougouSpider(object):
# 解析页面
def
parse_page
(
self
):
self
.
logger
.
info
(
'解析搜狗列表页
'
)
self
.
logger
.
info
(
f
'{self.searchkw}解析搜狗列表页...
'
)
response
=
self
.
driver
.
page_source
response
=
response
.
replace
(
'<em>'
,
''
)
response
=
response
.
replace
(
'</em>'
,
''
)
...
...
@@ -178,7 +178,7 @@ class SougouSpider(object):
'publishTag'
:
publishTag
}
lists
.
append
(
detailmsg
)
self
.
logger
.
info
(
f
'列表获取信息的条数{len(lists)}'
)
self
.
logger
.
info
(
f
'
{self.searchkw}---
列表获取信息的条数{len(lists)}'
)
return
lists
#获取当前时间
...
...
@@ -233,7 +233,7 @@ class SougouSpider(object):
current_datetime
=
datetime
.
datetime
.
now
()
delta
=
datetime
.
timedelta
(
days
=
1
)
publishtime
=
current_datetime
-
delta
elif
'今天'
in
publishtime
or
'小时前'
in
publishtime
or
'分钟前'
in
publishtime
:
elif
'今天'
in
publishtime
or
'小时前'
in
publishtime
or
'分钟前'
in
publishtime
:
delta
=
datetime
.
timedelta
(
hours
=
5
)
publishtime
=
current_datetime
-
delta
elif
'年'
in
publishtime
and
'月'
in
publishtime
:
...
...
@@ -265,7 +265,7 @@ class SougouSpider(object):
wait
=
WebDriverWait
(
self
.
driver
,
30
)
wait
.
until
(
EC
.
presence_of_element_located
((
By
.
TAG_NAME
,
"body"
)))
time
.
sleep
(
3
)
self
.
logger
.
info
(
"
开始抓取首页..."
)
self
.
logger
.
info
(
f
"{self.searchkw}
开始抓取首页..."
)
try
:
flag
,
lists
=
self
.
parse_page
()
if
len
(
lists
)
<
1
:
...
...
@@ -275,10 +275,15 @@ class SougouSpider(object):
return
if
len
(
lists
)
==
0
:
time
.
sleep
(
5
)
repeatCounts
=
0
for
detail
in
lists
:
durl
=
detail
[
'detailUrl'
]
is_member
=
self
.
r
.
sismember
(
'pysougou_'
+
self
.
wordsCode
,
durl
)
if
is_member
:
repeatCounts
+=
1
if
repeatCounts
/
len
(
lists
)
>
0.5
:
self
.
logger
.
info
(
f
"{self.searchkw}首页已存在50
%
以上,结束抓取"
)
return
continue
self
.
detailList
.
put
(
detail
)
...
...
@@ -289,10 +294,10 @@ class SougouSpider(object):
timeFlag
=
False
while
hasnext
==
'下一页'
:
try
:
if
self
.
page_num
==
21
:
if
self
.
page_num
==
5
:
break
self
.
page_num
=
self
.
page_num
+
1
self
.
logger
.
info
(
"开始抓取第
%
s页..."
%
self
.
page_num
)
self
.
logger
.
info
(
f
"{self.searchkw}开始抓取第{self.page_num}页..."
)
try
:
self
.
driver
.
find_element
(
By
.
XPATH
,
'//a[@id="sogou_next"]'
)
.
click
()
except
Exception
as
e
:
...
...
@@ -302,6 +307,7 @@ class SougouSpider(object):
flag
,
lists
=
self
.
parse_page
()
if
len
(
lists
)
<
1
:
break
repeated_counts
=
0
for
detail
in
lists
:
publishTag
=
detail
[
'publishTag'
]
# if publishTag:
...
...
@@ -314,6 +320,11 @@ class SougouSpider(object):
durl
=
detail
[
'detailUrl'
]
is_member
=
self
.
r
.
sismember
(
'pysougou_'
+
self
.
wordsCode
,
durl
)
if
is_member
:
self
.
logger
.
info
(
f
"{self.searchkw}已存在{detail['title']}"
)
repeated_counts
+=
1
if
repeated_counts
/
len
(
lists
)
>
0.5
:
self
.
logger
.
info
(
f
"{self.searchkw}第{self.page_num}页已存在过多,跳出循环"
)
return
continue
self
.
detailList
.
put
(
detail
)
if
timeFlag
:
...
...
@@ -328,7 +339,7 @@ class SougouSpider(object):
except
Exception
as
e
:
time
.
sleep
(
5
)
break
self
.
logger
.
info
(
"
抓取完毕"
)
self
.
logger
.
info
(
f
"{self.searchkw}列表
抓取完毕"
)
#获取资讯内容信息
...
...
@@ -423,7 +434,7 @@ class SougouSpider(object):
detailmsg
=
self
.
detailList
.
get
()
title
=
detailmsg
[
'title'
]
detailUrl
=
detailmsg
[
'detailUrl'
]
self
.
logger
.
info
(
"
%
s:
%
s
\n
"
%
(
title
,
detailUrl
))
self
.
logger
.
info
(
"
%
s:
%
s
开始解析详情数据
\n
"
%
(
title
,
detailUrl
))
try
:
# # js = "window.open('"+detailUrl+"')"
# # self.driver.execute_script(js)
...
...
sougou_comm/sougoutaskJob_comm.py
浏览文件 @
17a85405
...
...
@@ -169,8 +169,8 @@ class SougouTaskJob(object):
sougouSpider
.
get_page_html
()
except
Exception
as
e
:
logger
.
info
(
'搜狗搜索异常'
+
searchkw
)
finally
:
sougouSpider
.
driver
.
quit
()
#
finally:
#
sougouSpider.driver.quit()
if
sougouSpider
.
detailList
.
qsize
()
!=
0
:
try
:
sougouSpider
.
get_detail_html
()
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论