声明:
1、 学生刚开始学习爬虫,代码会有很多不严谨,也较为粗糙,单纯用于广大网友参考,希望能起到一定的帮助
2、 如果要转载,请标记出来源
3、本文纯粹用于技术练习,请勿用作非法途径
做题途中所遇问题:
1.同class名的div标签想要单独取用第二个。但是一直没法,最后使用find_all标签一起取用成列表格式,再进行选取
2.for循环嵌套有点不熟悉折腾好久才弄清楚循环,基础不扎实。
代码行:
import requests
from bs4 import BeautifulSoup
import xlwt
response=requests.get("http://bang.dangdang.com/books/fivestars/1-1")
response.encoding=response.apparent_encoding
#由于要先爬取数据再保存成文件,运用函数来分布功能,方便管理
bs = BeautifulSoup(response.text,"html.parser")
book_content=bs.find('ul',class_="bang_list clearfix bang_list_mode").find_all('li')
list=[]
for book in book_content:
#图书名
name=book.find('div',class_="name").find('a').text
#评分
score=book.find('div',class_="biaosheng").text
#作者
author=book.find('div',class_="publisher_info").find('a').attrs['title']
#出版日期
time=book.find_all('div',class_="publisher_info")
time=time[1].find('span').text
#出版社
address=book.find_all('div', class_="publisher_info")
address=address[1].find('a').text
#价格
price=book.find_next('div', class_="price").find('p').find('span',class_='price_n').text
books = (name,author, score, time, address, price)
list.append(books)
# print(list)
print("图书名:%s、作者:%s、评分:%s、出版日期:%s出版社:%s 价格:%s"%(name,author,score,time,address,price))
#1新建一个工作簿
workbook=xlwt.Workbook()
#2新建一个工作表
sheet1=workbook.add_sheet('当当网',cell_overwrite_ok=True)
col=("图书名","作者","评分","出版日期","出版社","价格")
for i in range(0,6):
sheet1.write(0,i,col[i])
#行数
#循环嵌套,先进行外循环,进入内循环,内循环循环结束,再回到外循环,进入内循环
for i in range(0,len(list)):
#先将一本书的信息从储存所有书中的表中分离出来
list2=list[i]
#列数
for j in range(0,6):
#然后再将这本书的信息分别割出来
sheet1.write(i+1,j,list2[j])
workbook.save('newExcel.xls')
输出结果: