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

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

另外我准备在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 태그는 기능을 생성할 수 있습니다

으아악

2. 타임스탬프 획득과 타임스탬프 변환을 하나의 기능으로 결합할 수 있습니다

으아악

3. 제목, 작성자, 시간을 함수로 처리 가능

으아악

이 기능은 재사용이 가능하며, 작은 프로그램이고 몇 가지 기능을 리팩토링하면 효과를 얻을 수 있기 때문에 호출이 매우 편리하고 유연합니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿