豆瓣图书爬虫项目 一、网络爬虫

用的库:

import requests第三方库要下载
import re
import threading

1、获取网页源代码

使用requests.get(‘网址’)获取网页源代码

获取网页源代码

获取结果

2、正则表达式

使用re.findall()进行正则匹配

正则匹配

正则匹配结果

3、获取网页源代码函数

获取网页源代码函数

  • GUI程序设计

GUI部分

  • 其他代码

计算书本数量函数

多线程

from tkinter import *
from tkinter import scrolledtext

import requests
import re
import threading

def get(ID):
    varl.set('已经获取到第%s本书'%ID)
    html = requests.get("https://book.douban.com/top250?start=" + str(ID))
    print(html.text)
    reg = re.compile(r'<table width="100%">.*?class="pl2".*?<a.*?>(.*?)</a>.*?class="pl">(.*?)</p>.*?rating_nums.*?>(.*?)</span>.*?pl.*?(\d+)人评价.*?</span>.*?</table>',re.S)
    list = re.findall(reg, html.text)
    return list

def write():
    ID = 0
    a = []
    b = []
    s = 0
    while ID <= 240:
        L = get(ID)
        ID +=20
        for i in L:
            s += 1
            a.append(float(i[2]))
            b.append(float(i[3]))
            text.insert(END,'书名%s'   '评分%s'              '评价数:%s\n'%(i[0],i[2],i[3]))
    text.insert(END,'--------------------------\n')
    text.insert(END,'该分类书本总数量:%s\n'%s)
    text.insert(END,'书本总评分:%s分\n' % sum(a))
    text.insert(END,'书本总评价数:%s条\n' % sum(b))
    text.insert(END,'书本平均评分%2f分\n' % (sum(a)/s))
    fn = open('read.text', 'w', encoding='utf-8')
    fn.write(text.get(1.0, END))
    fn.close()
    varl.set('处理完毕')

def th():
    t1 = threading.Thread(target=write)
    t1.start()

#GUI部分
root = Tk()   #创建窗口
root.geometry('700x530') #设置窗口大小
text = scrolledtext.ScrolledText(root,font = ('微软雅黑',10))
text.grid()  #布局方法

button = Button(root, text ='开始分析',font = ('微软雅黑',10),command = th)
button.grid()

varl = StringVar()   #设置变量,文字会发生变化
label = Label(root,font = ('微软雅黑',10),fg = 'red',textvariable = varl)
label.grid()

varl.set('准备中...')
root.mainloop()

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值