美文网首页
python3 采集

python3 采集

作者: 蛐蛐儿阳 | 来源:发表于2020-12-16 18:19 被阅读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)
    自己手动一个个尝试出来的, 正则不熟悉导致
    

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

    相关文章

      网友评论

          本文标题:python3 采集

          本文链接:https://www.haomeiwen.com/subject/vyrogktx.html