py3,mysql爬虫初试手

附:github源码
本文以爬取链家北京东城区租房信息为例。
先看一下我的目录结构:

__pycache__	
db.py	    //简单封装操作mysql的工具类
getproxy.py	  //从西刺网获取免费网络代理,并存到ip.json中,取用
image.png	
ip.json	//存放免费网络代理
main.py	//程序主入口
myhtml.py //解析链家网的内容获取需要的信息

其实这个例子没什么难的,简单介绍一下main文件,如果有不理解的地方可以给我留言。
爬去的地址:https://bj.lianjia.com/zufang/dongcheng/

import datetime
from myhtml import getHtml
from db import Db

#实例化db对象
db = Db()
#获取当前时间
start_time = datetime.datetime.now()

#爬取方法(爬取的页码)
def run(page):
    global start_time,datetime
    
    #调用自身时,可以一页一页往后爬
    page=page+1
    
    #第一页地址不加参数,从第二页开始加参数,pg?就是?页
    quer = 'pg'+str(page) if page>1 else ''
    url="https://bj.lianjia.com/zufang/dongcheng/"+quer
    
    arr = getHtml(url)
    #arr长度为0,则证明此页没数据,所有页已爬完,方法返回不再调用自身
    if len(arr)==0:
        db.close()
        print('全爬完,总耗时:',(datetime.datetime.now()-start_time).seconds,'秒')
        return
    
    #这一段是为了将爬取的数据存入mysql,我没有好好封装db类,所以这里就稍微写的麻烦一些
    keys=[]
    for i in arr[0]:
        keys.append(i)
    value=[]
    for i in arr:
        tstr = ''
        for idx in keys:
            if isinstance(i[idx],str):
                tstr +='"'+ i[idx]+'",'
            else:
                tstr+='"'+','.join(i[idx])+'",'
        value.append(tstr[:-1])
        # break
    db.insert('beijing',keys,value)
    
    #dos窗口打印信息
    print(page,'页, ',len(arr),'条数据','over,计时',(datetime.datetime.now()-start_time).seconds,'秒')
    #循环调用自身
    run(page)

run(0)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

樊一翻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值