python爬虫练习-爬取豆瓣图书top250

2018-03-31  本文已影响0人  Cookie_hunter

个人自学,完整学习请访问以下链接

学习链接:https://study.163.com/course/courseMain.htm?courseId=1004714034

代码

# -*-coding:utf-8-*-
import requests
from lxml import etree
import time
count = 1           #计数器

#一页25本书,一共10页,循环十次。
for i in range(10):
    #第一页:https://book.douban.com/top250?start=0
    #第二页:https://book.douban.com/top250?start=25
    #第三页:https://book.douban.com/top250?start=50
    #。。。以此类推得:
    url = 'https://book.douban.com/top250?start={}'.format(i*25)


    data = requests.get(url).text               #获取页面的text
    s = etree.HTML(data)                        #解析data

    books = s.xpath('/html/body/div[3]/div[1]/div/div[1]/div/table')

    #print(scores)
    for div in books:
        
        name = div.xpath('./tr/td[2]/div[1]/a/@title')[0]
        athor= div.xpath('./tr/td[2]/p[1]/text()')[0]
        score = div.xpath('./tr/td[2]/div[2]/span[2]/text()')[0]
        quote = div.xpath('./tr/td[2]/p[2]/span/text()')

        print(count)
        #有的文章没有quote部分
        if len(quote)>0:
            #print("title:{}\tathor:{}\nscore:{}\tquote:{}\n\n".format(name,athor,score,quote)
            #直接输入上文会产生问题,加上  .encode('GBK','ignore').decode('GBk') 也就是先用gbk编码,
            #忽略掉非法字符,然后再译码
            print("title:{}\tathor:{}\nscore:{}\tquote:{}\n\n".format(name,athor,score,quote).encode('GBK','ignore').decode('GBk'))
        else:
            print("title:{}\tathor:{}\nscore:{}\n\n".format(name,athor,score))
        count += 1              #计数器加一

效果

上一篇下一篇

猜你喜欢

热点阅读