【Python】01快速上手爬虫案例一:搞定豆瓣读书

这篇具有很好参考价值的文章主要介绍了【Python】01快速上手爬虫案例一:搞定豆瓣读书。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

实战是最好的老师,直接案例操作,快速上手。

案例一,爬取数据,最终效果图:

【Python】01快速上手爬虫案例一:搞定豆瓣读书,Python,python,爬虫,开发语言


一、VSCode+Python环境搭建

开发环境:MacBook Pro + VSCode + Python。

打开最新版VSCode,安装Python开发环境,快捷键:cmd+shift+x。

【Python】01快速上手爬虫案例一:搞定豆瓣读书,Python,python,爬虫,开发语言
选择Python解释器,快捷键:cmd+shift+p。输入:Python: Select Interpreter,选择解释器。
【Python】01快速上手爬虫案例一:搞定豆瓣读书,Python,python,爬虫,开发语言
写“hello world”。
新建文件,输入print(‘hello world~’),另存为hello.py文件。
shift+enter 运行:
【Python】01快速上手爬虫案例一:搞定豆瓣读书,Python,python,爬虫,开发语言

二、爬虫案例一

以爬取“豆瓣读书TOP250”的书籍为案例。

网址链接:https://book.douban.com/top250?start=0

1、爬取第一页数据

代码如下:

import requests
def askUrl(url):
    head = { 
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.15"
    }
    html=""  
    r = requests.get(url, headers = head) 
    html = r.text 
    print(html)  
    return html

if __name__ == "__main__": 
    askUrl("https://book.douban.com/top250?start=0") 

head->User-Agent的值可以从这个地方获取:

【Python】01快速上手爬虫案例一:搞定豆瓣读书,Python,python,爬虫,开发语言
如果import requests报错,使用pip3 install requests安装。

运行之后,结果如下:

【Python】01快速上手爬虫案例一:搞定豆瓣读书,Python,python,爬虫,开发语言

第一页25个,都以html的形式显示了出来,第25个为书籍《野草》。

2、爬取所有页数据

代码如下:


import requests
def askUrl(url):
    head = { 
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.15"
    }
    r = requests.get(url, headers = head)
    html = r.text
    print(html)

def getData(baseurl):
    for i in range(0, 10):
        url = baseurl + str(i * 25)
        html = askUrl(url)

if __name__ == "__main__": 
    baseurl = "https://book.douban.com/top250?start="
    getData(baseurl)

运行之后,结果如下:

【Python】01快速上手爬虫案例一:搞定豆瓣读书,Python,python,爬虫,开发语言

最后一页,最后一个,为书籍《哈姆莱特》。

3、格式化html数据

上面1和2,只是输出了html源码,现在按自己需要的几个字段进行格式化。

分别取这4个字段:封面图、书籍名称、作者(出版社、价格等)、引用。

【Python】01快速上手爬虫案例一:搞定豆瓣读书,Python,python,爬虫,开发语言

这里使用lxml库,解析html。

# 导入lxml库子模块etree
from lxml import etree 

格式化代码如下:

import requests
from lxml import etree 

def askUrl(url):
    head = { 
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.15"
    }
    html=""  
    r = requests.get(url, headers = head) 
    html = r.text 
    parse = etree.HTML(html)  
    # 数据
    # all_tr = parse.xpath('/html[@class="ua-mac ua-webkit book-new-nav"]/body/div[@id="wrapper"]/div[@id="content"]/div[@class="grid-16-8 clearfix"]/div[@class="article"]/div[@class="indent"]/table')
    all_tr = parse.xpath('//*[@id="content"]/div/div[1]/div/table')

    for tr in all_tr:
        tr_data = {
        'vover': ''.join(tr.xpath('./tr/td[1]/a/img/@src')).strip(), # 封面图
        'name': ''.join(tr.xpath('./tr/td[2]/div[@class="pl2"]/a/text()')).strip(), # 书名
        'author': ''.join(tr.xpath('./tr/td[2]/p[1]/text()')).strip(), # 作者
        'quote': ''.join(tr.xpath('./tr/td[2]/p[2]/span/text()')).strip() # 引用
        }
        print(tr_data)

if __name__ == "__main__": 
    askUrl("https://book.douban.com/top250?start=0") 

如果报错:

urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. 

解决方法:

pip3 install urllib3==1.26.15

结果如下:

【Python】01快速上手爬虫案例一:搞定豆瓣读书,Python,python,爬虫,开发语言

数据,已经非常清晰了。

PS:使用parse.xpath,最重要的是获取到准确的xpath值。

两个方法:

方法一:Google Chrome浏览器插件:xpath helper。

效果如下:

弹出插件面板:cmd+shift+x。

选中:shift。

【Python】01快速上手爬虫案例一:搞定豆瓣读书,Python,python,爬虫,开发语言
取到的值为:

# 原始值
/html[@class='ua-mac ua-webkit book-new-nav']/body/div[@id='wrapper']/div[@id='content']/div[@class='grid-16-8 clearfix']/div[@class='article']/div[@class='indent']/table[1]/tbody/tr[@class='item']

# 优化后的值(使用此值,去掉了tbody和[1])
/html[@class='ua-mac ua-webkit book-new-nav']/body/div[@id='wrapper']/div[@id='content']/div[@class='grid-16-8 clearfix']/div[@class='article']/div[@class='indent']/table

方法二:Google Chrome浏览器,查看源代码。

【Python】01快速上手爬虫案例一:搞定豆瓣读书,Python,python,爬虫,开发语言

取到的值为:

# 原始值
//*[@id="content"]/div/div[1]/div/table[1]/tbody/tr

# 优化后的值(使用此值,去掉了tbody和[1])
//*[@id="content"]/div/div[1]/div/table

每一个字段对应的xpath值,也是这么获取。

4、导出excel文件

生成csv格式文件。

导入csv库:

import csv

导出cvs文件(第一页25条),代码如下:

import requests
from lxml import etree 
import csv

def askUrl(url):
    head = { 
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.15"
    }
    html=""  
    r = requests.get(url, headers = head) 
    html = r.text 
    parse = etree.HTML(html)  
    # 数据
    all_tr = parse.xpath('//*[@id="content"]/div/div[1]/div/table')

    # 创建book.csv文件
    with open('book.csv', 'a', encoding='utf_8_sig', newline='') as fp:  
        header = ['封面','名称', '作者', '引用']  
        writer = csv.writer(fp)  
        writer.writerow(header)

    for tr in all_tr:
        tr_data = {
        'vover': ''.join(tr.xpath('./tr/td[1]/a/img/@src')).strip(), # 封面图
        'name': ''.join(tr.xpath('./tr/td[2]/div[@class="pl2"]/a/text()')).strip(), # 书名
        'author': ''.join(tr.xpath('./tr/td[2]/p[1]/text()')).strip(), # 作者
        'quote': ''.join(tr.xpath('./tr/td[2]/p[2]/span/text()')).strip() # 引用
        }
        # print(tr_data)
        # 写入数据行
        with open('book.csv', 'a', encoding='utf_8_sig', newline='') as fp:  
            fieldnames = ['vover','name', 'author', 'quote']  
            writer = csv.DictWriter(fp, fieldnames)  
            writer.writerow(tr_data)

if __name__ == "__main__": 
    askUrl("https://book.douban.com/top250?start=0") 

导出的book.csv文件(第一页),如下:

【Python】01快速上手爬虫案例一:搞定豆瓣读书,Python,python,爬虫,开发语言

导出cvs文件(所有的250条),代码如下:

import requests
from lxml import etree 
import csv

def askUrl(url):
    head = { 
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.15"
    }
    r = requests.get(url, headers = head)
    html = r.text
    # print(html)

    parse = etree.HTML(html)
    all_tr = parse.xpath('//*[@id="content"]/div/div[1]/div/table')

    for tr in all_tr:
        tr_data = {
            'vover': ''.join(tr.xpath('./tr/td[1]/a/img/@src')).strip(), # 封面图
            'name': ''.join(tr.xpath('./tr/td[2]/div[@class="pl2"]/a/text()')).strip(), # 书名
            'author': ''.join(tr.xpath('./tr/td[2]/p[1]/text()')).strip(), # 作者
            'quote': ''.join(tr.xpath('./tr/td[2]/p[2]/span/text()')).strip() # 引用
            }
            # print(tr_data)
        # 写入数据行
        with open('bookall.csv', 'a', encoding='utf_8_sig', newline='') as fp:  
                fieldnames = ['vover','name', 'author', 'quote']  
                writer = csv.DictWriter(fp, fieldnames)  
                writer.writerow(tr_data)

def getData(baseurl):
    # 创建book.csv文件
    with open('bookall.csv', 'a', encoding='utf_8_sig', newline='') as fp:  
        header = ['封面','名称', '作者', '引用']  
        writer = csv.writer(fp)  
        writer.writerow(header)
    # 插入25页的数据
    for i in range(0, 10):
        url = baseurl + str(i * 25)
        html = askUrl(url)


if __name__ == "__main__": 
    baseurl = "https://book.douban.com/top250?start="
    getData(baseurl)

导出的book.csv文件(所有页250条数据),如下:

【Python】01快速上手爬虫案例一:搞定豆瓣读书,Python,python,爬虫,开发语言文章来源地址https://www.toymoban.com/news/detail-836030.html


到了这里,关于【Python】01快速上手爬虫案例一:搞定豆瓣读书的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 最强Python开源库PyTorch入门实战(案例实战)+快速上手TorchServe

    作者:禅与计算机程序设计艺术 在过去几年里,深度学习领域涌现了一大批高水平的模型,这些模型基于大量的数据和GPU计算能力实现了炫酷的效果。这其中最具代表性的是卷积神经网络(Convolutional Neural Networks, CNN),其网络结构可以学习到图像、视频、文本等多种模态特

    2024年02月07日
    浏览(40)
  • python爬虫项目——豆瓣Top250

    我们今天讲一个爬虫项目案例,实现对豆瓣电影top榜的爬取 。把爬取的数据存到我们电脑本地文件当中。通过这个项目可以让我们真正感受到爬虫的带给我们的乐趣。现在我来讲一下思路以及实现方法,因为豆瓣电影的这个反爬机制不高,所以我们可以通过这个案列快速上手

    2024年02月11日
    浏览(59)
  • 【学习笔记】Flowable - 01 - 工作流 快速上手

    JDK8 Flowable6 (6.3 or 6.7.2) Postgresql (MySQL同样支持) 波哥:2023年Flowable详细讲解 波哥:2022年Flowable教程-基础篇 Flowable BPMN 用户手册 中文 官方网站 官方github源码 IDEA低版本提供一个BPMN解析插件: 但是并没有很好的支持流程的绘制。 存在几个工具: 古老的Eclipse(太老的不推荐 官

    2024年01月19日
    浏览(41)
  • 【爬虫实战】用python爬豆瓣电影《热烈》短评

    目录 一、爬虫对象-豆瓣电影短评 二、爬取结果 三、爬虫代码讲解 三、演示视频 四、获取完整源码 您好!我是@马哥python说,一名10年程序猿。 今天分享一期爬虫案例,爬取的目标是:豆瓣上任意一部电影的短评(注意:是短评,不是影评!),以《热烈》这部电影为例:

    2024年02月09日
    浏览(39)
  • 【爬虫实战】用python爬豆瓣电影《热烈》的短评!

    您好!我是@马哥python说,一名10年程序猿。 今天分享一期爬虫案例,爬取的目标是:豆瓣上任意一部电影的短评(注意:是短评,不是影评!),以《热烈》这部电影为例: 爬取以上6个段,含: 页码, 评论者昵称, 评论星级, 评论时间, 评论者IP属地, 有用数, 评论内容

    2024年02月03日
    浏览(31)
  • Python requests爬虫豆瓣图片返回数据为空。

    爬个豆瓣图片,记录个小问题,发现爬取豆瓣原图的时候拿不到数据,返回为空,爬小图可以,爬其他网站的也都正常,最后发现是header中If-Modified-Since这个参数的原因,加上了就拿不到数据,去掉就行。

    2024年02月09日
    浏览(32)
  • Python爬虫实战-批量爬取豆瓣电影排行信息

    大家好,我是python222小锋老师。 近日锋哥又卷了一波Python实战课程-批量爬取豆瓣电影排行信息,主要是巩固下Python爬虫基础 视频版教程: Python爬虫实战-批量爬取豆瓣电影排行信息 视频教程_哔哩哔哩_bilibili Python爬虫实战-批量爬取豆瓣电影排行信息 视频教程作者:小锋老师

    2024年02月05日
    浏览(49)
  • python爬虫小练习——爬取豆瓣电影top250

    将爬取的数据导入到表格中,方便人为查看。 三大功能 1,下载所有网页内容。 2,处理网页中的内容提取自己想要的数据 3,导入到表格中 https://www.bilibili.com/video/BV1CY411f7yh/?p=15

    2024年01月17日
    浏览(45)
  • 【Python】爬虫练习-爬取豆瓣网电影评论用户的观影习惯数据

    目录 前言 一、配置环境 1.1、 安装Python 1.2、 安装Requests库和BeautifulSoup库 1.3.、安装Matplotlib 二、登录豆瓣网(重点) 2.1、获取代理 2.2、测试代理ip是否可用 2.3、设置大量请求头随机使用 2.4、登录豆瓣网 三、爬取某一部热门电影数据 3.1、爬取全部长、短评论 3.2、获取用户

    2024年02月09日
    浏览(43)
  • python爬虫——爬取豆瓣top250电影数据(适合初学者)

    爬取豆瓣top250其实是初学者用于练习和熟悉爬虫技能知识的简单实战项目,通过这个项目,可以让小白对爬虫有一个初步认识,因此,如果你已经接触过爬虫有些时间了,可以跳过该项目,选择更有挑战性的实战项目来提升技能。当然,如果你是小白,这个项目就再适合不过

    2024年02月07日
    浏览(76)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包