开学第一只虫虫,看看新学期有什么好看的书吧

开学啦,让我们来看看豆瓣上有什么好书吧

首先当然是很正经地访问一下网页啦

网站网址是https://book.douban.com/top250?start=0

那么我们所需要的内容就是图片旁边的信息了,那就先让虫子爬过去吧,上吧小虫虫!!!

# -*- coding:UTF-8 -*-
import requests
from bs4 import BeautifulSoup

headers = {
    ‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36‘
            }
resp = requests.get(‘https://book.douban.com/top250?start=0‘,headers = headers)
# print(resp.text)

好了,get到源代码了,再来看看自己需要的信息在哪里

就是这个,用beautifulsoup解析他!

soup = BeautifulSoup(resp.text,‘lxml‘)

alldiv = soup.find_all(‘div‘, class_=‘pl2‘)
# print(alldiv)
‘‘‘
for a in alldiv:
    names = a.find(‘a‘)[‘title‘]
    print(‘find_all():‘,names)
可以简化为下面两条
‘‘‘
names = [a.find(‘a‘)[‘title‘] for a in alldiv]
print(names)

欧克,同理找到其他信息

allp = soup.find_all(‘p‘, class_="pl")
authors = [p.get_text()for p in allp]
print(authors)

starspan = soup.find_all(‘span‘,class_="rating_nums")
scores = [s.get_text() for s in starspan]
print(scores)

sumspan = soup.find_all(‘span‘,class_="inq")
sums  = [i.get_text() for i in sumspan]
print(sums)

然后我们把资源都统一到一个列表里面

for name, author, score, sum in zip(names,authors,scores,sums):    name = ‘书名:‘+ str(name)+ ‘\n‘    author = ‘作者:‘ + str(author) + ‘\n‘    score = ‘评分:‘ + str(score) + ‘\n‘    sum = ‘评价:‘ + str(sum) + ‘\n‘    data = name + author + score +sum

把他存起来!

filename = ‘豆瓣图书排名top250.txt‘
with open(filename,‘w‘,encoding= ‘utf-8‘) as f:
    f.writelines(‘data‘ + ‘==========================‘+‘\n‘)
    print(‘OK‘)

至此第一页的内容我们就抓到了

那我们再来看看翻页的网址

就最后一个数字发生了变化呢,看起来只要对请求的网页改一下就好惹

base_url = ‘https://book.douban.com/top250?start=‘
urllist = []
for page in range(0,250,25):
    allurl = base_url + str(page)
    urllist.append(allurl)

那么现在只要把所有的功能对象化,不断爬取、翻页、爬取就好啦

嗯,撸起来

# -*- coding:UTF-8 -*-
import requests
from bs4 import BeautifulSoup
def get_html(url):
    headers = {
        ‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36‘
                }
    resp = requests.get(url, headers = headers)
    # print(resp.text)
    return resp

def html_parse():
    for url in all_page():
        soup = BeautifulSoup(get_html(url), ‘lxml‘)
        alldiv = soup.find_all(‘div‘, class_=‘pl2‘)
        # print(alldiv)
        ‘‘‘
        for a in alldiv:
            names = a.find(‘a‘)[‘title‘]
            print(‘find_all():‘,names)
        可以简化为下面两条
        ‘‘‘
        names = [a.find(‘a‘)[‘title‘] for a in alldiv]
        # print(names)
        allp = soup.find_all(‘p‘, class_="pl")
        authors = [p.get_text()for p in allp]
        # print(authors)
        starspan = soup.find_all(‘span‘, class_="rating_nums")
        scores = [s.get_text() for s in starspan]
        # print(scores)
        sumspan = soup.find_all(‘span‘, class_="inq")
        sums  = [i.get_text() for i in sumspan]
        # print(sums)
        for name, author, score, sum in zip(names,authors,scores,sums):
            name = ‘书名:‘+ str(name)+ ‘\n‘
            author = ‘作者:‘ + str(author) + ‘\n‘
            score = ‘评分:‘ + str(score) + ‘\n‘
            sum = ‘评价:‘ + str(sum) + ‘\n‘
            data = name + author + score +sum
            f.writelines(data + ‘==========================‘+‘\n‘)

def all_page():
    base_url = ‘https://book.douban.com/top250?start=‘
    urllist = []
    for page in range(0,250,25):
        allurl = base_url + str(page)
        urllist.append(allurl)
    return  urllist

filename = ‘豆瓣图书排名top250.txt‘
f = open(filename, ‘w‘, encoding=‘utf-8‘)
html_parse()
f.close()
print(‘OK‘)

结果出现了报错,喵喵喵?

我们把代码稍微改一下

# -*- coding:UTF-8 -*-
import requests
from bs4 import BeautifulSoup

def get_html(url):
    headers = {
        ‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36‘
                }
    resp = requests.get(url, headers = headers)
    print(resp.status_code)
    return resp

def html_parse(resp):
    # for url in all_page():
    #     get_html(url)
    #     print(resp)
        soup = BeautifulSoup(resp, ‘lxml‘)
        alldiv = soup.find_all(‘div‘, class_=‘pl2‘)
        # print(alldiv)
        ‘‘‘
        for a in alldiv:
            names = a.find(‘a‘)[‘title‘]
            print(‘find_all():‘,names)
        可以简化为下面两条
        ‘‘‘
        names = [a.find(‘a‘)[‘title‘] for a in alldiv]
        # print(names)
        allp = soup.find_all(‘p‘, class_="pl")
        authors = [p.get_text()for p in allp]
        # print(authors)
        starspan = soup.find_all(‘span‘, class_="rating_nums")
        scores = [s.get_text() for s in starspan]
        # print(scores)
        sumspan = soup.find_all(‘span‘, class_="inq")
        sums  = [i.get_text() for i in sumspan]
        # print(sums)
        for name, author, score, sum in zip(names,authors,scores,sums):
            name = ‘书名:‘+ str(name)+ ‘\n‘
            author = ‘作者:‘ + str(author) + ‘\n‘
            score = ‘评分:‘ + str(score) + ‘\n‘
            sum = ‘评价:‘ + str(sum) + ‘\n‘
            data = name + author + score +sum
            f.writelines(data + ‘==========================‘+‘\n‘)

def all_page():
    base_url = ‘https://book.douban.com/top250?start=‘
    urllist = []
    for page in range(0,250,25):
        allurl = base_url + str(page)
        urllist.append(allurl)
    return  urllist

filename = ‘豆瓣图书排名top250.txt‘
# f = open(filename, ‘w‘, encoding=‘utf-8‘)
n = 0
for url in all_page():
    n = n+ 1
    print(n)
    get_html(url)
# html_parse(resp)
# f.close()
print(‘OK‘)

访问网页跳转正常,那么就是源代码输出到解析函数中发生了错误咯?

filename = ‘豆瓣图书排名top250.txt‘
# f = open(filename, ‘w‘, encoding=‘utf-8‘)
n = 0
resps = []
for url in all_page():
    n = n+ 1
    print(n)
    get_html(url)

print(resps)
# for response in resps
#     html_parse(resp)
# f.close()
print(‘OK‘)

输出的是。。。。!!!

搜嘎!!!我忘记加上text了

就是这一行!!!

再把文件的打开加上,终于可以惹!!不过我把第二个循环提到了外面方便大家理解哈哈哈

# -*- coding:UTF-8 -*-
import requests
from bs4 import BeautifulSoup

def get_html(url):
    headers = {
        ‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36‘
                }
    resp = requests.get(url, headers = headers).text
    resps.append(resp)
    # return resp

def html_parse(response):
    # for url in all_page():
    #     get_html(url)
    #     print(resp)
        soup = BeautifulSoup(response, ‘lxml‘)
        alldiv = soup.find_all(‘div‘, class_=‘pl2‘)
        # print(alldiv)
        ‘‘‘
        for a in alldiv:
            names = a.find(‘a‘)[‘title‘]
            print(‘find_all():‘,names)
        可以简化为下面两条
        ‘‘‘
        names = [a.find(‘a‘)[‘title‘] for a in alldiv]
        # print(names)
        allp = soup.find_all(‘p‘, class_="pl")
        authors = [p.get_text()for p in allp]
        # print(authors)
        starspan = soup.find_all(‘span‘, class_="rating_nums")
        scores = [s.get_text() for s in starspan]
        # print(scores)
        sumspan = soup.find_all(‘span‘, class_="inq")
        sums  = [i.get_text() for i in sumspan]
        # print(sums)
        for name, author, score, sum in zip(names,authors,scores,sums):
            name = ‘书名:‘+ str(name)+ ‘\n‘
            author = ‘作者:‘ + str(author) + ‘\n‘
            score = ‘评分:‘ + str(score) + ‘\n‘
            sum = ‘评价:‘ + str(sum) + ‘\n‘
            data = name + author + score +sum
            f.writelines(data + ‘==========================‘+‘\n‘)

def all_page():
    base_url = ‘https://book.douban.com/top250?start=‘
    urllist = []
    for page in range(0,250,25):
        allurl = base_url + str(page)
        urllist.append(allurl)
    return  urllist

filename = ‘豆瓣图书排名top250.txt‘
f = open(filename, ‘w‘, encoding=‘utf-8‘)
resps = []
for url in all_page():
    get_html(url)
print(resps)
for response in resps:
   html_parse(response)
f.close()
print(‘OK‘)

结果如图:

我们再打开文件看一下

nice啊哈哈哈哈

补充,我在相关的一些爬取教程中看见说豆瓣有的时候书名和简介不服

这是因为有一些简介缺失了

所以可以补充以下代码:

sum_div = soup.select(‘tr.item>td:nth-of-type(2)‘)
sums = []
for di in sum_div:
    sumspan = div.find(‘span‘,class_=‘inq‘)
    summary = sumspan.get_text() if sumspan else ‘无‘
    sums.append(summary)

好了,今天就爬到这里了,你已经做的很好了,回来吧小虫虫!

原文地址:https://www.cnblogs.com/xingnie/p/9577401.html

时间: 2024-12-15 09:22:08

开学第一只虫虫,看看新学期有什么好看的书吧的相关文章

java开学第一周测试自我感想

开学第一周,王建民老师就对我们进行了java测试,对我们说测试题目是基于期末考试的基础难度来出的.我们的考试完全是靠暑假在家自学的基础,如果在家没有自学java,那完全就是看不懂试卷到底要考什么.由于是第一次测试,王建民老师也没有为难我们,它允许我们上网查资料,百度一下,只要能做出这个代码就行.可是就算在网上查找一些相关的问题目,我还是无法将这个测试的题目实现出来,我还是无法完成这个题目.因为我在暑假的时候根本就没有学习Java的知识,来学后知道要进行测试,仅仅突击看了一点java得书,无论如何

开学第一周

这周,是开学第一周.新学期新气象,第一节课,老师就给我们一个下马威.到现在还有点懵.第一次上机,第一次接触真正的程序,第一次真正的思考,编写程序.很多第一次没了,也慢慢的从一个小白开始懵懂.编写ATM机系统时,在定义类,声明变量,构造成员函数等过程中,或多或少都有问题.想了很久,感觉还是自己初次接触这种上课模式,初次接触这种程序,更重要的还是自己暑假没有好好学习Java.在网上看了很多教程都只是一知半解,没有深入学习过.通过这次学习,才发现了自己的短板,及时醒悟,还不算晚.加油 原文地址:htt

记录我疫情下的开学第一周

记录我疫情下的开学第一周 陈宇卿 ????我没想到我踌躇满志的一个学期是以这样的形式开始的. ????如果回到43天前,我一定会带上更多的书,再仔细检查一边宿舍的门窗和电器再出发.我仍记得出发之前,我站在B223的中央不断徘徊着,寻思着到底带不带上我厚重的剑雅全套,后来想了想往年寒假惨痛的教训,貌似回家书最大的用处是摆在旁边让我爸妈觉得我在学习.又琢磨着,情人节就在北京打美赛了,便头也不回地离开了北工大. ????然后,大家都知道了,新型冠状病毒爆发了. ????我的包里只带了两本书,<数学建模

人大笔记 | 请收下这份新学期笔记攻略!

上了大学, 你还保留着动笔的习惯吗? 作为互联网的原住民, 你还会在课上记笔记吗? 除了在word里写下心情, 你还会写日记或记手账吗? "秋毫虽细握非轻", 其实把很多事付诸笔端, 会给予生活更多有温度的记录. 新学期,从认真记笔记开始-- 人大人笔下的温度 民法总论 @杨茂坤 有了认真的笔记,考试周被民法支配的恐惧都少了一些呢(微笑) 历史 @廖悦辰 emmm-上面记的好多都没听说过 emmm-什么时候我学历史能这么认真? 英语 @成文琪 早上背英语单词时 我的笔记和头上的树叶脚下

大三开学第一天--编译原理和人工智能的初步入门

开学的第一天,学的都是入门,所以知识比较少,但是我还是会整理出来.因为是开学第一天,事情比较忙,知识没有得到很好的消化和了解,所以今天只作初步了解,过几天会找时间重新整理,具体化. 编译原理第一课: 编译器:编译器是一种语言处理器,可以将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”.通俗的讲,就是我们目前所使用的高级语言,如C++,java,都是易于人们理解和编写的.但是对于机器来说,只能看懂机器语言(即汇编语言,属于低级语言).所以,人们用高级语言写出来的代码,首先要经

展望&#183;新学期

因有一个双胞胎哥哥,寓为并蒂雪莲,因此爸妈给我取名为袁文雪.今年即将进入20岁的旅程,来自朱德元帅故里四川仪陇,现就读于成都大学,是计算机科学与技术专业一名大三的学生.平时喜欢笑,喜欢旅游,阅读,做菜,因为对英语很感兴趣,平时也喜欢听一些英语歌以及看一些英语演讲视频. 我学的是计科,处在这样一个男女比例严重失衡的专业中,虽平时完全不需要干搬书这类体力活,但同时在专业学习中,女生的优势也明显的弱化.就我自己而言,初次接受专业的学习变觉得自己没有多高的兴趣,但我还是想尽力学好自己的专业,我敬仰那些在

最是虫虫,有画难描雅态,无花可比芳容

"最是虫虫,有画难描雅态,无花可比芳容."一转眼,话在天边,人在面前.低头,侧身,乌发半垂,嫣然一笑,惊鸿一眸催开春光无边.清晰如现! 过去的我们与此刻的我们正在告别,互相辨认.你走后依旧的街,总有青春依旧的歌,总是有人不断重演我们的事.记忆永恒! 把这么多的阳光积聚在一个人的身上,难免会有疏漏的地方.我无权占有自己不该拥有的东西,比如陪你读一本厚厚人生的阅历之书,但是,寒冷的切肤之痛提醒我,我有必要把手伸在空中,抓一把,再往外送.温暖如故! 送你一本书,不宜太厚,也不宜太薄:不宜有太

自我总结(八)- 新学期

 自我完善的过程就是在不断的自我总结不断的改进.   过年回家: 回到家后,我几乎就是天天都呆在家里的.回到家里我就哪里都不想去.和家里人过了个难忘的新年.因为从来不和我交流的爸爸.在过年那天居然和我讲了很多话,不管是在学习方面,以后的工作方面,对于我们家庭的各方面. 新学期: 依旧是好好的学习,每天写写自己的学习的笔记.今年有个重点就是要出去找工作了.也希望自己能找到个适合自己的岗位,投身到我喜欢的这个工作中去.我也会尽量把自己最好的一面展现在我的工作中.其实我最担心的就是我的技术,自我感觉我

新学期随笔——脚踏实地

初高中的时候,几乎每个学期开始,班主任就会强迫着大家写一点东西,比如:新学期的目标啦,新学期的方向啦.这次,特别不一样的,想给自己定一些任务,确认一下自己的方向. 一句话来概括的话,应该就是“好好学习,做好兼职,有勇气旅行”. 时间过的真的快,自己已经大三,想想自己还是什么都不会,的确惭愧.上个学期,自己把自己折腾了一番,几乎什么都没有学到,现在想想,后悔倒不至于,遗憾还是有的. 在学习方面,要做到的就一点“脚踏实地”!在这里又要给自己贴一个标签了——想太多!在上个学期的学习中,的确是这样的,在