元宵节到了,爬个字谜,写入数据库
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()
数据来源为沪江中学在线字典,本文代码纯粹技术交流使用,请勿用于商业用途,访问间隔建议不要太短,容易短时间造成大量数据流量
这是老魏的公众号,会发布自己的一些爬虫和经验,大家有兴趣可以一起来交流

4215

被折叠的 条评论
为什么被折叠?



