元宵节爬灯谜

元宵节到了,爬个字谜,写入数据库

import requests
import re
import sqlite3,time

#-------------常数区---------------

conn=sqlite3.connect('zimi.db')
c=conn.cursor()
into='''insert into lib values (NULL ,"%s" ,"%s"  )'''
res=requests.session()
h={
    'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_0_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.192 Safari/537.36'
}
dic={}

#----------------函数区-------------

#获取谜底函数
def getmidi(ul):
    url='https://zhongxue.hujiang.com'+ul
    s=res.get(url,headers=h).text
    x=re.findall('<p><span class="miti">谜底:</span><a href="/zidian/[^"]+" class="red">(.*?)</a></p>',s)[0]
    time.sleep(1)#访问间隔
    return x

#获取列表函数
def getlist(page):
    url='https://zhongxue.hujiang.com/zidian/caizimi/page'+str(page)+'/'
    s=res.get(url,headers=h).text
    x=re.findall('<a href="(/zidian/zimi/\d+/)">(.*?)</a>',s)
    for i in x:
        mimian=i[1]
        ul=i[0]
        try:
            midi=getmidi(ul)
            dic.update({mimian:midi})
        except:
            print(mimian,ul)

#---------主函数-----------------

if __name__ == '__main__':

    #----获取全部字谜列表----
    for i in range(21):
        getlist(i+1)
        print(i)
    #----把dic写入到数据库中----
    for i in dic:
        try:
            c.execute(into % (i, dic[i]))
            conn.commit()
        except:
            print(i, dic[i])
    conn.close()

创建数据库使用代码

import sqlite3
conn=sqlite3.connect('zimi.db')
c=conn.cursor()
cre="create table '%s' (id integer PRIMARY KEY autoincrement,mimian TEXT NOT NULL ,midi TEXT   );"
c.execute(cre%('lib'))
conn.commit()
conn.close()

数据来源为沪江中学在线字典,本文代码纯粹技术交流使用,请勿用于商业用途,访问间隔建议不要太短,容易短时间造成大量数据流量

这是老魏的公众号,会发布自己的一些爬虫和经验,大家有兴趣可以一起来交流
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值