没想到做数据分析也要学习爬虫,幸好会点前端的基础知识,行吧,搞起。
1. 前提准备
- 目的:爬取豆瓣读书经典分类第一页的二十本书的书名
- 需要的模块:
- requests
- BeautifulSoup
# 下载安装
pip install requests
pip install bs4
# 导入
from bs4 import BeautifulSoup
import requests
2. 代码搞起
import requests
from bs4 import BeautifulSoup
# 添加登录信息
# 登录信息在浏览器开发工具Network - Doc - Header里面找,需自行登录豆瓣
# 保险起见,下面内容我改了些数据
# 主要就是Header和Cookie
dic_h = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36"}
cookie = '''ll="1157683"; bid=_sU_hV7qb04; dbcl2="1312381777:okfsm+CyrjQ"; ck=haXU; ap_v=0,6.0; push_noty_num=0; push_doumail_num=0'''
dic_c = {}
for i in cookie.split('; '):
dic_c[i.split('=')[0]] = i.split('=')[1]
# 添加url
url = "https://book.douban.com/tag/%E7%BB%8F%E5%85%B8"
r = requests.get(url,headers=dic_h,cookies=dic_c)
bsObj = BeautifulSoup(r.content,'lxml')
# 这里要分析一下网页结构,不贴图了,具体的自行进开发工具查看
# 列出的书都在ul标签下,按照class = subject-list这个属性来找
# 每本书分开放在一个 li 标签下
ullist = bsObj.find('ul',{"class":"subject-list"})
lilst = ullist.findAll('li')
# 在 li 下找第二个 a 标签
# 将title存放在titlelist列表中
titlelist = []
for li in lilst:
title = li.findAll('a')[1]['title']
titlelist.append(title)
这样,一个超简单的爬虫就写好了,打印一下结果:
print(titlelist)
['小王子', '活着', '追风筝的人', '红楼梦', '围城', '平凡的世界(全三部)', '百年孤独', '骆驼祥子', '月亮与六便士', '傲慢与偏见', '鲁滨逊漂流记', '老人与海', '三体', '简爱(英文全本)', '边城', '飘', '许三观卖血记', '霍乱时期的爱情', '穆斯林的葬礼', '了不起的盖茨比']
这是经典类目下的前二十本书,看过其中11本,《红楼梦》囫囵吞枣地看了一半,家里的半白话《红楼梦》看起来比《百年孤独》还累+_+
网友评论