python爬虫实现获取豆瓣图书的top250的信息-beautifulsoup实现

python实现,结果保存在同一目录下的douba.txt中

使用beautifulsoup实现


#coding=utf-8

import urllib2
from bs4 import BeautifulSoup
#伪造的头,不知到有用否
sendHeaders = {
    'User-Agent':'Mozilla/5.3 (Windows NT 7.2; rv:18.0) Gecko/20100101 Firefox/19.0',
    'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Connection':'keep-alive'
}
urlTmep = 'https://book.douban.com/top250?start='
saveFile = open('douban.txt','a')
k=1
for i in range(11):
    url = urlTmep + str(i*5)   #页码是通过get方式获取,同每页在后面都是5的倍数,一共10页
    request = urllib2.Request(url,headers=sendHeaders)
    html=urllib2.urlopen(request)
    soup = BeautifulSoup(html,'lxml')
    nameInfo = soup.select('div[class="pl2"]')  #找到名字所在的位置
    booksInfo = soup.select('p[class="pl"]')  #出版社相关所在的位置
    ratingInfo = soup.select('span[class="rating_nums"]') #评星所在的位置
    commenInfo = soup.select('span[class="pl"]')   #评价数量所在的位置
    # print(">>>>>>>>>>>>>>")
    for j in range(len(nameInfo)):
        print('正在保存第%d页的第%d条信息'%(i,k))
        #每次使用select之后得到的是一个里列表,使用attrs必须在前面进行选择其中的元素来操作
        bookName = nameInfo[j].select('a')[0].attrs['title']  #获得中文名
        saveFile.write(str(k)+'.'+bookName.encode('utf-8')+':') #给其加上序号
        try:  #部分书没有外文名字,没有的时候提示indexerror,所以except掉了
            englishName = nameInfo[j].select('span')[0].get_text()  #获得英文名
            #select支持多重select
            saveFile.write(englishName.encode('utf-8'+','))
        except IndexError:
            pass
        booksInformation = booksInfo[j].get_text()  #获得书的作者。出版社,价格,时间等信息
        saveFile.write(booksInformation.encode('utf-8')+'  ')
        ratingNum = ratingInfo[j].get_text()  #获得评星
        saveFile.write(ratingNum.encode('utf-8')+',')
        commenGetTemp = commenInfo[j].get_text()  #获得书的评价
        commen = commenGetTemp.replace('\n','')  #评价数量中带有的换行和空格replace掉
        commenFinal = commen.replace('                    ','').replace('                ','')
        saveFile.write(commenFinal.encode('utf-8')+'\n')
        k += 1
saveFile.close()
一下的获得的部分输出结果,前面的序号是VIM自带带的序号

  1 1.小王子:Le Petit Prince[法] 圣埃克苏佩里 / 马振聘 / 人民文学出版社 / 2003-8 / 22.00元  9.0,(204167人评价)
  2 2.追风筝的人:The Kite Runner[美] 卡勒德·胡赛尼 / 李继宏 / 上海人民出版社 / 2006-5 / 29.00元  8.8,(228565人评价)
  3 3.围城:钱锺书 / 人民文学出版社 / 1991-2 / 19.00  8.9,(173925人评价)
  4 4.活着:余华 / 南海出版公司 / 1998-5 / 12.00元  9.1,(116275人评价)
  5 5.白夜行:白夜行[日] 东野圭吾 / 刘姿君 / 南海出版公司 / 2008-9 / 29.80元  9.1,(162732人评价)
  6 6.挪威的森林:ノルウェイの森[日] 村上春树 / 林少华 / 上海译文出版社 / 2001-2 / 18.80元  8.0,(174405人评价)
  7 7.解忧杂货店:ナミヤ雑貨店の奇蹟(日)东野圭吾 / 李盈春 / 南海出版公司 / 2014-5 / 39.50元  8.6,(134401人评价)
  8 8.不能承受的生命之轻:Nesnesitelná lehkost bytí[捷克] 米兰·昆德拉 / 许钧 / 上海译文出版社 / 2003-7 / 23.00元  8.4,(127417人评价)
  9 9.红楼梦:[清] 曹雪芹 著 / 人民文学出版社 / 1996-12 / 59.70元  9.5,(108465人评价)
 10 10.梦里花落知多少:郭敬明 / 春风文艺出版社 / 2003-11 / 20.00元  7.2,(141104人评价)
 11 11.三体: : “地球往事”三部曲之一 刘慈欣 / 重庆出版社 / 2008-1 / 23.00  8.8,(115903人评价)
 12 12.达·芬奇密码:The Da Vinci Code[美] 丹·布朗 / 朱振武 / 上海人民出版社 / 2004-2 / 28.00元  8.2,(121321人评价)
 13 13.嫌疑人X的献身:容疑者Xの献身[日] 东野圭吾 / 刘子倩 / 南海出版公司 / 2008-9 / 28.00  8.9,(109931人评价)
 14 14.1988:我想和这个世界谈谈:韩寒 / 国际文化出版公司 / 2010-9 / 25.00元  7.9,(114942人评价)
 15 15.何以笙箫默:顾漫 / 朝华出版社 / 2007-4 / 15.00元  8.0,(111928人评价)
 16 16.看见:柴静 / 广西师范大学出版社 / 2013-1-1 / 39.80元  8.8,(103123人评价)
 17 17.简爱:Jane Eyre[英] 夏洛蒂·勃朗特 / 世界图书出版公司 / 2003-11 / 18.00元  8.5,(99087人评价)
 18 18.平凡的世界(全三部):路遥 / 人民文学出版社 / 2005-1 / 64.00元  9.0,(90373人评价)
 19 19.哈利·波特与魔法石:Harry Potter and the Philosopher's Stone[英] J. K. 罗琳 / 苏农 / 人民文学出版社 / 2000-9 / 19.50元  9.0,(79974人评价)
 20 20.百年孤独:Cien años de soledad[哥伦比亚] 加西亚·马尔克斯 / 范晔 / 南海出版公司 / 2011-6 / 39.50元  9.2,(83348人评价)
 21 21.飘(上下):Gone with the Wind[美国] 玛格丽特·米切尔 / 李美华 / 译林出版社 / 2000-9 / 40.00元  9.3,(71491人评价)
 22 22.杜拉拉升职记:李可 / 陕西师范大学出版社 / 2007-9 / 26.00元  7.8,(87962人评价)
 23 23.三重门:韩寒 / 作家出版社 / 2000-5 / 16.00  7.4,(91852人评价)
 24 24.送你一颗子弹:刘瑜 / 上海三联书店 / 2010-1 / 25.00元  8.6,(79907人评价)
 25 25.倾城之恋:张爱玲 / 花城出版社 / 1997-3-1 / 11.00  8.5,(80855人评价)


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值