豆瓣python源码_python爬虫1——获取网站源代码(豆瓣图书top250信息)

该博客介绍了一个Python爬虫类`Spider`,用于爬取豆瓣图书Top250页面的书籍信息,包括书名、作者、评分和评论数。通过`requests`库获取网页源代码,正则表达式提取所需内容,并保存到`bookList.txt`文件中。爬虫采用分页方式,每次抓取25本书,总共爬取250本书的信息。
摘要由CSDN通过智能技术生成

#-*- coding: utf-8 -*-

importrequestsimportreimportsys

reload(sys)

sys.setdefaultencoding('utf-8')classSpider(object):def __init__(self):print('开始爬取豆瓣图书top250的内容。。。。。。')#传入url,返回网页源代码

defgetSourceCode(self, url):

html=requests.get(url)returnhtml.text#从源代码中提取出我们需要的内容块:{书名、作者出版社等、评分、评价人数}。

defgetEveryBookContent(self, sourceCode):

everyBookContent= re.findall('

', sourceCode, re.S)#everyBookContent = re.findall('
(.*?)
(.*?)

(.*?)

', sourceCode, re.S)

returneveryBookContent#从内容块中提取出数据

defgetBookInfo(self, eachBookContent):

bookInfo={}#bookInfo['title'] = re.subn('( |\n|
|?span.*?>)', "", re.search('(.*?)', eachBookContent, re.S).group(1))[0]

bookInfo['title'] = re.sub('( |\n|
|?span.*?>)', "", re.search('(.*?)', eachBookContent, re.S).group(1))

bookInfo['author'] = re.search('

(.*?)

', eachBookContent, re.S).group(1)

bookInfo['discussNum'] = re.sub('( |\n|
)', "", re.search('\((.*?)\)', eachBookContent, re.S).group(1))

bookInfo['score'] = re.search('(.*?)', eachBookContent, re.S).group(1)returnbookInfo#将结果保存到文件

defsaveBookInfo(self, bookList):

f= open("bookList.txt", "a")for each inbookList:

f.writelines('书 名:\t {}\n'.format(each['title']))

f.writelines('作 者:\t {}\n'.format(each['author']))

f.writelines('评论数:\t {}\n'.format(each['discussNum']))

f.writelines('评 分:\t {}\n\n'.format(each['score']))

f.close()defstart(self, url):

sourceCode=self.getSourceCode(url)

everyBookContent=self.getEveryBookContent(sourceCode)

bookList=[]for each ineveryBookContent:

bookList.append(self.getBookInfo(each))

self.saveBookInfo(bookList)if __name__ == '__main__':

douban=Spider()

url= 'http://book.douban.com/top250?start=0'i=0while i <= 225:

url= 'http://book.douban.com/top250?start={}'.format(i)

douban.start(url)

i+= 25

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值