python3 写了个爬虫。
多线程爬取数据写入数据库
一开始使用的是 sqllite3,一直提示 database is blocked,后来发现 sqllite 不支持多线程读写
然后谷歌搜了一下,看到了别人推荐使用 mysql 来做这种任务...我只会基础的 CURD 操作,用了简单的多线程来操作,然而 mysql 貌似也不能直接多线程插入数据,stackoverflow 里面的老哥们说是需要建立连接池...头疼,之前只接触过基础的操作,请各位 V2er 赐教
python3 代码:
def getExin():
while not Q.empty():
i = Q.get()
.*
try:
.*
except :
continue
try:
c.execute("INSERT INTO exin (username, password) \
VALUES (%s,'%s')" % (username, password))
conn.commit()
except:
pass
for i in range(0, 99475):
if len(str(i)) < 5:
i = (5 - len(str(i))) * "0" + str(i)
Q.put(i)
threads = []
conn = connect(user='root', password='root', database='test')
c = conn.cursor()
for i in range(800):
x = threading.Thread(target=getExin,args=())
threads.append(x)
for t in threads:
t.start()
c.close()
print("All done")
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.