cari

Rumah  >  Soal Jawab  >  teks badan

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

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

另外我准备在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')

大家讲道理大家讲道理2826 hari yang lalu676

membalas semua(1)saya akan balas

  • 巴扎黑

    巴扎黑2017-04-18 09:54:46

    Jika anda turut menambah operasi pangkalan data dalam gelung for, kod itu akan kelihatan hodoh, sebenarnya, setiap bahagian boleh dibahagikan kepada fungsi atau kelas untuk dikendalikan,
    Contohnya,
    1 dan tag html penapis boleh mencipta fungsi

    def get_page(url):
        pass
    

    2. Mendapatkan cap masa dan menukar cap masa boleh digabungkan dalam satu fungsi

    def handld_time():
        pass
        
    

    3. Mendapatkan tajuk, pengarang dan masa boleh diproses dengan fungsi

    def get_article_content():
        pass
    
    

    Dengan cara ini, fungsi boleh digunakan semula, dan ia sangat mudah dan fleksibel untuk dipanggil, kerana ini hanyalah program kecil, dan kesannya boleh dicapai dengan membina semula dengan beberapa fungsi

    balas
    0
  • Batalbalas