美文网首页代码改变世界程序员@IT·互联网
如何爬取豆瓣阅读的所有出版社?

如何爬取豆瓣阅读的所有出版社?

作者: 陈昱熹 | 来源:发表于2017-05-19 16:01 被阅读0次

  • 工具

  • Python

  • urllib

  • re

  • sqlite3

  • 目标
    爬取豆瓣阅读网站的所有出版社信息以及每个出版社出售作品的数量,并将其保存在txt文件以及sqlite数据库中。

  • 代码(里面有一处不能理解的地方,求解答

#1.导入相关模块
import urllib.request
import re
import sqlite3
#2.读取网页信息并解码
url = "https://read.douban.com/provider/all"
data = urllib.request.urlopen(url).read().decode('utf-8','ignore')
#3.采用正则表达式提取目标内容
pat1 = '<div class="name">(.*?)</div>'
pat2 = '<div class="works-num">(.*?) 部作品在售</div>'
rst1 = re.compile(pat1).findall(data)
rst2 = re.compile(pat2).findall(data)
rst = zip(rst1,rst2)
#4.存储txt文件
with open('demo1.txt','w') as fh:
    for i,j in rst:
        line = i + ' ,' + j +'\n'
        fh.write(line)
#5.存储sqlite数据库
conn = sqlite3.connect('demo1.db')
curs = conn.cursor()
curs.execute('''
CREATE TABLE publish (
    publisher TEXT,
    num INTEGER
)
''')
query = 'INSERT INTO publish VALUES (?,?)'
for line in open('demo1.txt'):
    line = line.split(',')
    curs.execute(query,line)
#curs.executemany(query,rst) **为什么不能直接这样做?
#curs.executemany(query,rst) **为什么不能直接这样做?
#curs.executemany(query,rst) **为什么不能直接这样做?
conn.commit()
conn.close()
  • 结果


    txt文件
    数据库文件

相关文章

网友评论

    本文标题:如何爬取豆瓣阅读的所有出版社?

    本文链接:https://www.haomeiwen.com/subject/rjpyxxtx.html