python3 采集

2020-12-16  本文已影响0人  蛐蛐儿阳

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)
自己手动一个个尝试出来的, 正则不熟悉导致

其实可以用现成包去采集, 只指定标签即可,就不用写正则了。
我这里浪费了好多时间。

上一篇下一篇

猜你喜欢

热点阅读