python3.5 - 请问我的python小爬虫代码应该怎么做优化?

 霙昉蘖976 发布于 2022-10-26 13:18

新入门做的一个爬取文段程序,代码看起来比较臃肿,请问有没有什么好的建议呢?

另外我准备在for循环末尾把数据插入mysql数据库,这样做好吗,还是说再弄一个for循环,第一个for循环把数据存进二维列表里,第二个循环再逐条插入数据呢?


#-*- coding:utf-8 -*-
import re
from pyquery import PyQuery as pq
import time

#过滤html标签
def stripTag(x):
    return re.sub('<(.*?)>','',str(x))

#转换时间戳
def timeStamp(x):
    return time.mktime(time.strptime(x,'%Y-%m-%d %H:%M'))

#获取网页局部源码
d = pq(url='http://www.juexiang.com/list/1017')
d = pq(d('.left').html())
x = d('p.arttitle')

#匹配时间格式
pattern = re.compile(r"[0-9]{4}(.*)[0-9]{2}")

#for循环获取标题、作者、时间
for i in x:
    a = pq(pq(i).html())
    title = stripTag(pq(a('a').eq(0).text()))
    author = stripTag(pq(a('a').eq(1).text()))
    time1 = str(pq(a('span').eq(2).text()))
    time1 = timeStamp((pattern.search(time1)).group())
    print(title,'\t',author,'\t',time1,'\n')

1 个回答
  • 如果还在for循环里添加数据库操作,那代码看起来就很丑了,其实每一部分都可以分成函数或建类来处理,
    比如
    1.获取网页内容和过滤html标签可以建一个函数

    def get_page(url):
        pass
    

    2.获取时间戳和转换时间戳可以合并在一个函数中

    def handld_time():
        pass
        
    

    3.获取标题、作者、时间可用一个函数处理

    def get_article_content():
        pass
    
    

    这样函数可以复用,并且调用起来十分方便灵活,因为这只是一个小程序,用几个函数重构就可以达到效果了

    2022-10-27 01:09 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有