Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Z
zzsn_spider
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
1
合并请求
1
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
丁双波
zzsn_spider
Commits
a7fb2733
提交
a7fb2733
authored
2月 06, 2024
作者:
薛凌堃
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
百度采集-企业+关键词
上级
24e150af
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
34 行增加
和
111 行删除
+34
-111
baidutaskJob_loc.py
百度采集/baidu_comm/baidutaskJob_loc.py
+21
-47
baseCore.py
百度采集/baidu_comm/baseCore.py
+13
-64
没有找到文件。
百度采集/baidu_comm/baidutaskJob_loc.py
浏览文件 @
a7fb2733
# -*-
coding: utf-8 -*-
# -*-
coding: utf-8 -*-
...
...
@@ -163,9 +163,8 @@ class BaiduTaskJob(object):
return
kwList
def
runSpider
(
self
,
kwmsg
):
searchkw
=
kwmsg
[
'kw'
]
def
runSpider
(
self
,
kwmsg
,
com_name
):
searchkw
=
com_name
+
kwmsg
[
'kw'
]
wordsCode
=
kwmsg
[
'wordsCode'
]
sid
=
kwmsg
[
'sid'
]
baiduSpider
=
BaiduSpider
(
searchkw
,
wordsCode
,
sid
)
...
...
@@ -186,7 +185,15 @@ class BaiduTaskJob(object):
finally
:
baiduSpider
.
driver
.
quit
()
logger
.
info
(
"关键词采集结束!"
+
searchkw
)
import
random
def
get_comname
(
self
):
# todo:读取redis里的企业名称添加到关键词上
com_name
=
baseCore
.
redicPullData
(
'SousuoBaidu:companyname'
)
if
com_name
:
return
com_name
else
:
logger
.
info
(
'====已无企业==='
)
return
None
def
PutWords
(
codeList
,
r
):
...
...
@@ -208,50 +215,17 @@ if __name__ == '__main__':
baseCore
=
BaseCore
()
logger
=
baseCore
.
getLogger
()
# ss='(中国机床工具工业协会|中国内燃机工业协会|中国机电工业价格协会|中国机械电子兵器船舶工业档案学会|中国仪器仪表行业协会|中国工程机械工业协会|中国文化办公设备制造行业协会|中国机械工业金属切削刀具技术协会|中国机械工业教育协会|中国汽车工业协会|中国机械通用零部件工业协会|中国环保机械行业协会|中国模具工业协会|中国机械工业勘察设计协会|中国机械制造工艺协会|中国机械工业审计学会|中国轴承工业协会|中国机电一体化技术应用协会|中国机械工程学会|中国液压气动密封件工业协会|中国铸造协会|中国通用机械工业协会|中国锻压协会|中国制冷空调工业协会|中国热处理行业协会|中国电工技术学会|中国仪器仪表学会|中国石油和石油化工设备工业协会|中国表面工程协会|中国食品和包装机械工业协会|中国焊接协会|中国汽车工程学会|中国塑料机械工业协会|中国机械工业企业管理协会|中国印刷及设备器材工业协会|中国机械工业质量管理协会|中国电器工业协会|中国机械工业安全卫生协会|中国重型机械工业协会|中国机械工业标准化技术协会|中国机械工业职工思想政治工作研究会|中国农业机械工业协会|中国机电装备维修与改造技术协会 |机械工业信息研究院|机械工业教育发展中心|机械工业经济管理研究院|机械工业信息中心|机械工业人才开发服务中心|机械工业北京电工技术经济研究所|机械工业技术发展基金会|机械工业哈尔滨焊接技术培训中心|机械工业仪器仪表综合技术经济研究所)+(私收会费|私吞|肆意牟利|损失浪费|索贿|贪财|贪官污吏|贪污|违背组织原则|违法|违纪|为官不廉|为政擅权|窝案|舞弊|泄露国家机密|信鬼神|性关系|虚假信息|虚假招标|隐瞒不报|隐瞒真相|营私|鬻爵|主动投案|资产流失|钻空子|钻漏洞|被调查|被双开|不担当|不老实|不良影响|不正当|不作为|超标准建设|超标准装修|吃空饷|吃拿卡要|渎职|对党不忠诚|非法批地|腐败|腐虫|腐化堕落|公车私用|公费开销|公款吃喝|公款出境|公款旅游|勾结|官迷心窍|好色|回扣|贿赂|挤占挪用|纪律审查|监察调查|监守自盗|践踏法律|接受审查调查|截留克扣|开除党籍|开除公职|抗议|利欲熏心|敛财|乱摊派|乱作为|落马|落网|买官|买卖审批权限|卖官|谋取暴利|谋取私利|目无法纪|幕后交易|弄虚作假|挪用公款|骗取|钱色交易|潜规则|侵害权益|侵吞公款|侵占挪用|圈子文化|权利扭曲|权钱交易|权色交易|山头主义|涉案|生活糜烂|生活奢靡|失察|失管|收送|受贿|双规|双开|私分|私人会所|私设小金库|负面|下降|违规|不利|亏损|上诉|不法|不良名单|停职|公开谴责|公诉|内幕交易|刑事拘留|刑事责任|刑拘|判决|判刑|判赔|司法处置|合同纠纷|处分|处罚|强制执行|仲裁|伪造|伪造公章|投案|投诉|拘留|接受调查|控诉|查封|涉嫌|涉诉监察调查|纠纷|经营异常名录|缉捕|罚单|罚款|罚金|罪犯|自首|获刑|行贿|警示函|贪腐|违约金|追究刑责|造假|逮捕|非法|非法集资判决书|申诉|纠纷|通报|开除|留党察看|追债|逃债|资产负债率|情色交易|搞权钱|曝光|黑料|重罚|虚假报告|侵犯)'
# keymsglist=baiduTaskJob.getkeywords(ss)
# print(keymsglist)
# 创建Redis连接
# r = redis.Redis(host="114.115.236.206", port=6379, password='clbzzsn', db=6)
# codeList = [
# 'KW-20220809-0004',
# 'KW-20220524-0004',
# 'KW-20220809-0005',
# 'KW-20220824-0001',
# 'KW-20220809-0002',
# 'KW-20220809-0003',
# 'KW-20220826-0001',
# 'KW-20220602-0003',
# 'KW-20220602-0002',
# 'KW-20220113-0007',
# 'KW-20220113-0006',
# 'KW-20220108-0004',
# 'KW-20220113-0004'
# ]
# PutWords(codeList, r)
while
True
:
try
:
# codeid = redicPullData("BaiduSearch:WordsCode", r)
# if codeid:
# pass
# else:
# PutWords(codeList, r)
# #codeList.append('KW-20220108-0004')
# logger.info(f'开始采集{codeid}')
com_name
=
baiduTaskJob
.
get_comname
()
if
com_name
:
pass
else
:
break
codeList
=
[
# 'KW-20220809-0004',
# 'KW-20220524-0004',
# 'KW-20220809-0005',
# 'KW-20220824-0001',
# 'KW-20220809-0002',
# 'KW-20220809-0003',
'KW-20220826-0001'
,
# 'KW-20220602-0003',
# 'KW-20220602-0002',
# 'KW-20220113-0007',
# 'KW-20220113-0006',
# 'KW-20220108-0004',
# 'KW-20220113-0004'
'KW-20240206-0001'
,
'KW-20240206-0002'
,
'KW-20240206-0003'
]
for
codeid
in
codeList
:
try
:
...
...
@@ -271,7 +245,7 @@ if __name__ == '__main__':
# 创建一个线程池,指定线程数量为4
with
concurrent
.
futures
.
ThreadPoolExecutor
(
max_workers
=
1
)
as
executor
:
# 提交任务给线程池,每个任务处理一个数据
results
=
[
executor
.
submit
(
baiduTaskJob
.
runSpider
,
data
)
for
data
in
kwList
]
results
=
[
executor
.
submit
(
baiduTaskJob
.
runSpider
,
data
,
com_name
)
for
data
in
kwList
]
# 获取任务的执行结果
for
future
in
concurrent
.
futures
.
as_completed
(
results
):
try
:
...
...
百度采集/baidu_comm/baseCore.py
浏览文件 @
a7fb2733
# -*-
coding: utf-8 -*-
# -*-
coding: utf-8 -*-
...
...
@@ -7,6 +7,7 @@ import logbook
import
logbook.more
# 核心工具包
import
pymysql
import
redis
from
tqdm
import
tqdm
# 注意 程序退出前 调用BaseCore.close() 关闭相关资源
class
BaseCore
:
...
...
@@ -215,6 +216,8 @@ class BaseCore:
except
:
pass
def
__init__
(
self
):
# 连接到Redis
self
.
r
=
redis
.
Redis
(
host
=
"114.115.236.206"
,
port
=
6379
,
password
=
'clbzzsn'
,
db
=
6
)
self
.
__cnx_proxy
=
pymysql
.
connect
(
host
=
'114.115.159.144'
,
user
=
'caiji'
,
password
=
'zzsn9988'
,
db
=
'clb_project'
,
charset
=
'utf8mb4'
)
self
.
__cursor_proxy
=
self
.
__cnx_proxy
.
cursor
()
...
...
@@ -288,65 +291,11 @@ class BaseCore:
def
getRandomUserAgent
(
self
):
return
random
.
choice
(
self
.
__USER_AGENT_LIST
)
# 获取代理
def
get_proxy
(
self
):
sql
=
"select proxy from clb_proxy"
self
.
__cursor_proxy
.
execute
(
sql
)
proxy_lists
=
self
.
__cursor_proxy
.
fetchall
()
self
.
__cnx_proxy
.
commit
()
ip_list
=
[]
for
proxy_
in
proxy_lists
:
ip_list
.
append
(
str
(
proxy_
)
.
replace
(
"('"
,
''
)
.
replace
(
"',)"
,
''
))
proxy_list
=
[]
for
str_ip
in
ip_list
:
str_ip_list
=
str_ip
.
split
(
'-'
)
proxyMeta
=
"http://
%(host)
s:
%(port)
s"
%
{
"host"
:
str_ip_list
[
0
],
"port"
:
str_ip_list
[
1
],
}
proxy
=
{
"http"
:
proxyMeta
,
"https"
:
proxyMeta
}
proxy_list
.
append
(
proxy
)
return
proxy_list
[
random
.
randint
(
0
,
3
)]
def
get_proxy
(
self
):
ip_list
=
[]
with
self
.
__cursor_proxy
as
cursor
:
sql_str
=
'''select PROXY from clb_proxy where id={} '''
.
format
(
random
.
randint
(
1
,
12
))
print
(
sql_str
)
cursor
.
execute
(
sql_str
)
rows
=
cursor
.
fetchall
()
for
row
in
tqdm
(
rows
):
str_ip
=
row
[
0
]
str_ip_list
=
str_ip
.
split
(
'-'
)
proxyMeta
=
"http://
%(host)
s:
%(port)
s"
%
{
"host"
:
str_ip_list
[
0
],
"port"
:
str_ip_list
[
1
],
}
proxy
=
{
"HTTP"
:
proxyMeta
,
"HTTPS"
:
proxyMeta
}
ip_list
.
append
(
proxy
)
return
ip_list
def
get_proxyIPPort
(
self
):
ip_list
=
[]
with
self
.
__cursor_proxy
as
cursor
:
sql_str
=
'''select PROXY from clb_proxy where id={} '''
.
format
(
random
.
randint
(
1
,
12
))
print
(
sql_str
)
cursor
.
execute
(
sql_str
)
rows
=
cursor
.
fetchall
()
for
row
in
tqdm
(
rows
):
str_ip
=
row
[
0
]
str_ip_list
=
str_ip
.
split
(
'-'
)
proxy
=
{
"host"
:
str_ip_list
[
0
],
"port"
:
str_ip_list
[
1
],
}
ip_list
.
append
(
proxy
)
return
ip_list
\ No newline at end of file
# 从Redis的List中获取并移除一个元素
def
redicPullData
(
self
,
key
):
try
:
self
.
r
.
ping
()
except
:
self
.
r
=
redis
.
Redis
(
host
=
"114.115.236.206"
,
port
=
6379
,
password
=
'clbzzsn'
,
db
=
6
)
item
=
self
.
r
.
lpop
(
key
)
return
item
.
decode
()
if
item
else
None
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论