python爬虫——豆瓣图书top250信息

# -*- coding: utf-8 -*-
import requests
import re
import sys
reload(sys)
sys.setdefaultencoding(‘utf-8‘)

class Spider(object):
    def __init__(self):
        print(‘开始爬取豆瓣图书top250的内容。。。。。。‘)

    # 传入url,返回网页源代码
    def getSourceCode(self, url):
        html = requests.get(url)
        return html.text

    # 从源代码中提取出我们需要的内容块:{书名、作者出版社等、评分、评价人数}。
    def getEveryBookContent(self, sourceCode):
        everyBookContent = re.findall(‘<table width="100%">(.*?)</table>‘, sourceCode, re.S)
        # everyBookContent = re.findall(‘<div class="pl2">(.*?)</div>(.*?)<p class="pl">(.*?)</p>‘, sourceCode, re.S)
        return everyBookContent

    # 从内容块中提取出数据
    def getBookInfo(self, eachBookContent):
        bookInfo = {}
        # bookInfo[‘title‘] = re.subn(‘( |\n|<br/>|</?span.*?>)‘, "", re.search(‘<a href=.*?>(.*?)</a>‘, eachBookContent, re.S).group(1))[0]
        bookInfo[‘title‘] = re.sub(‘( |\n|<br/>|</?span.*?>)‘, "", re.search(‘<a href=.*?>(.*?)</a>‘, eachBookContent, re.S).group(1))
        bookInfo[‘author‘] = re.search(‘<p class="pl">(.*?)</p>‘, eachBookContent, re.S).group(1)
        bookInfo[‘discussNum‘] = re.sub(‘( |\n|<br/>)‘, "", re.search(‘<span class="pl">\((.*?)\)</span>‘, eachBookContent, re.S).group(1))
        bookInfo[‘score‘] = re.search(‘<span class="rating_nums">(.*?)</span>‘, eachBookContent, re.S).group(1)
        return bookInfo

    # 将结果保存到文件
    def saveBookInfo(self, bookList):
        f = open("bookList.txt", "a")
        for each in bookList:
            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()

    def start(self, url):
        sourceCode = self.getSourceCode(url)
        everyBookContent = self.getEveryBookContent(sourceCode)
        bookList = []
        for each in everyBookContent:
            bookList.append(self.getBookInfo(each))
        self.saveBookInfo(bookList)

if __name__ == ‘__main__‘:
    douban = Spider()
    url = ‘http://book.douban.com/top250?start=0‘
    i = 0
    while i <= 225:
        url = ‘http://book.douban.com/top250?start={}‘.format(i)
        douban.start(url)
        i += 25
时间: 2024-10-12 21:18:16

python爬虫——豆瓣图书top250信息的相关文章

Python 2.7_利用xpath语法爬取豆瓣图书top250信息_20170129

大年初二,忙完家里一些事,顺带有人交流爬取豆瓣图书top250 1.构造urls列表 urls=['https://book.douban.com/top250?start={}'.format(str(i) for i in range(0, 226, 25))] 2.模块 requests获取网页源代码 lxml 解析网页 xpath提取 3.提取信息 4.可以封装成函数 此处没有封装调用 python代码: #coding:utf-8 import sys reload(sys) sys.

豆瓣图书Top250

从豆瓣图书Top250抓取数据,并通过词云图展示 导入库 from lxml import etree #解析库 import time #时间 import random #随机函数 import pandas as pd import requests #请求库 import jieba #导入结巴分词 from pyecharts.charts import WordCloud from pyecharts import options as opts 抓取数据 #循环构造网址 def f

python爬虫之User-Agent用户信息

python爬虫之User-Agent用户信息 爬虫是自动的爬取网站信息,实质上我们也只是一段代码,并不是真正的浏览器用户,加上User-Agent(用户代理,简称UA)信息,只是让我们伪装成一个浏览器用户去访问网站,然而一个用户频繁的访问一个网站很容易被察觉,既然我们可以伪装成浏览器,那么也同样可以通过UA信息来变换我们的身份. 整理部分UA信息 OperaMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like G

python获取豆瓣电影TOP250的所有电影的相关信息

参考文档:https://weread.qq.com/web/reader/37132a705e2b2f37196c138k98f3284021498f137082c2e 说明:我才接触网络爬虫,在看<python网络爬虫入门到实践>一书时,作者写了个实例获取豆瓣电影TOP250的所有电影的电影名称,我在此基础上进行了更进一步的改进,获取了所有的相关信息,并用表格将这些信息保存下来. 相关知识: 网络爬虫分为三个步骤: 第一步:伪装为浏览器访问:第二步:解析网页代码:第三步:存储数据. (1)

[感想]Web crawler with Python - 03.豆瓣电影TOP250

按照大牛的步骤简单地爬了豆瓣电影top250.过程感想记录一下. 教程链接:在这里 爬虫写完以后,一直出现错误 AttributeError: 'NoneType' object has no attribute 'find' #'nonetype'的对象没有属性发现 出错原因:调用对象是个None,然后调用出错.出错行原本是在第10页没有下一页的链接时候,判断soup.find('span', attrs={'class', 'next'}).find('a')  这句话的结果来选择返回结果,

【爬虫】爬取豆瓣图书TOP250

通过xpath定位元素 使用xpath定位元素有好几种方法 // 是从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置. #!/user/bin/env python #coding:utf-8 #先是从selenium导入webdriver,然后用webdriver打开安装好的谷歌浏览器. from selenium import webdriver #打开chrom浏览器 browser =webdriver.Chrome() #访问豆瓣 browser.get('https://bo

爬虫-爬取豆瓣图书TOP250

import requests from bs4 import BeautifulSoup def get_book(url): wb_data = requests.get(url) soup = BeautifulSoup(wb_data.text,'lxml') title_list = soup.select('h1 > span') title = title_list[0].text author_list = soup.select('div#info > a') author

[Python]计算豆瓣电影TOP250的平均得分

用python写的爬虫练习,感觉比golang要好写一点. 1 import re 2 import urllib 3 4 origin_url = 'https://movie.douban.com/top250?start=00&filter=' 5 urls = [] 6 scores = [] 7 8 9 def get_url(): 10 step = 0 11 while step <= 250: 12 tmp = origin_url[:38] 13 tmp += str(st

Python爬虫-豆瓣电影 Top 250

爬取的网页地址为:https://movie.douban.com/top250 打开网页后,可观察到:TOP250的电影被分成了10个页面来展示,每个页面有25个电影. 那么要爬取所有电影的信息,就需要知道另外9个页面的URL链接. 第一页:https://movie.douban.com/top250 第二页:https://movie.douban.com/top250?start=25&filter= 第三页:https://movie.douban.com/top250?start=5