1, 本身我对python3 并不太熟悉, 硬着头皮写采集, 有难受的地方,也有学习到的地方。
重点1, 我有一个脚本, 执行时间较长, 我怎么判断,在执行期间,再次执行时退出脚本呢?
头部
pidLog = 'pid.log'
if(os.path.exists(pidLog)):
print("程序在跑,退出")
exit()
pid = os.getpid()
fw = open(pidLog, 'w+')
fw.write(str(pid))
fw.close()
尾部
os.remove(pidLog)
其实就是, 头部,把pid写入一个文件, 程序判断有此文件, 退出。
重点2:python3 对mysql的操作
changePublishSql = 'update td_publish set status=%s where id=%s'
cursor.execute(changePublishSql, [1, site[2]])
connection.commit()
python3 在对数据库执行 增删改查操作时候, 必须commit后才会生效,他自动把事务打包,统一提交。
重点3:
我命名循环了10次,只输出了一次
我在程序循环中,用了 exit(), 相当于php中的 exit 或 die, 直接退出程序了,应该用break, 或continue。
这个和语言无关,是我疏忽了,浪费了好多时间。
重点4
正则表达式, ? 代表多次匹配
re.compile('productId":\d+').findall(pageInfo)
re.compile('sellerAdminSeq":\d+').findall(pageInfo)
re.compile('name="member_detail">[\S]*</a>').findall(CommentPageInfo)
re.compile('class="r-time-new">[\S\s]{17}').findall(CommentPageInfo)
re.compile('<dt class="buyer-feedback">[\s\S]*?</span>').findall(CommentPageInfo)
re.compile('<dt class="buyer-feedback">[\s\S]*?</dl>').findall(CommentPageInfo)
自己手动一个个尝试出来的, 正则不熟悉导致
其实可以用现成包去采集, 只指定标签即可,就不用写正则了。
我这里浪费了好多时间。
网友评论