python3.5 - 请问我的python小爬虫代码应该怎么做优化?
大家讲道理
大家讲道理 2017-04-18 09:52:46
0
1
672

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

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

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

membalas semua(1)
巴扎黑

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan