BeautifulSoup的简单使用

最简单的爬虫程序,可以让初学者快速了解爬虫的过程。本文主要使用python3.0+配合BeautifulSoup完成豆瓣读书top250信息的抓取和整合。

豆瓣读书.png

首先下载并安装BeautifulSoup4,大致阅读下使用文档然后创建python文件,引用库文件信息如下:

import urllib.request
from bs4 import BeautifulSoup

主程序结构:

file = open("/Users/brave/Documents/python/top250.txt","w",encoding = "utf-8")
for i in range(0,250,25):
    URL = "https://book.douban.com/top250?start=" + str(i)
    print(URL)
    getAndSaveInfo(file,URL)
file.close()

说明:爬虫的书写没有绝对最佳的方式,规律的寻找有时候比技术更重要。通过点击不同页码,发现top250信息总是在同一个网址的基础上进行递增,故使用for循环,定位不同页面的网址,进而完成所有的解析。
由于需求简单,此程序仅需定义一个子函数getAndSaveInfo即可完成任务:

def getAndSaveInfo(file,URL):
    resp = urllib.request.urlopen(URL)
    html = resp.read()
    # print(html
    bssoup = BeautifulSoup(html,"html.parser")
    tables = bssoup.find_all("table")
    for table in tables:
        item = table.find("tr",class_="item")
        if(item):
            # print(item)
            content = item.find_all("td")[1]
            # print(content)
            title = content.find("div",class_="pl2").a["title"]
            # print(title)
            writerAndPrice = content.find("p",class_="pl").string.split("/")
            writerTemp = writerAndPrice[0]
            writer = writerTemp.split("]")[1] if(writerTemp[0] == "[") else writerTemp
            price =  writerAndPrice[len(writerAndPrice)-1]
            # print(writer)
            score = content.find("div",class_="star clearfix").find("span",class_="rating_nums").string
            # print(score)
            countTemp = content.find("div",class_="star clearfix").find("span",class_="pl").string
            count = countTemp[1:len(countTemp)-1].strip()
            record = title+writer+price+score+count+"\n"
            print(record)
            file.write(record)

结果示例:

top250图片.png

说明:BeautifulSoup通过标签来定位解析属性值,通常需要开发者在浏览器调式模式中(F12)查看各级结构,逐步定位。把以上三段信息合在一起即是完整的程序,故不再提供完整的代码下载地址。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,837评论 18 139
  • scrapy学习笔记(有示例版) 我的博客 scrapy学习笔记1.使用scrapy1.1创建工程1.2创建爬虫模...
    陈思煜阅读 12,760评论 4 46
  • 街上,人流、车流熙来攘往,都有自己要去的地方;燕子冬去春回,永远知道适合自己的家在哪里。 没有航线,飞机将不知道如...
    未央宫主阅读 583评论 0 5
  • 雪花飘飘,北风萧萧。2016年人们期望已久的的第一场雪从天空中缓缓地投入大地母亲的怀抱。此时校园里更是一片欢快的...
    宁静何以志远阅读 348评论 2 1
  • 一、首先我们先准备材料,采用最简单的打Log的方式来进行事件分发的详解,其实事件的传递机制就是代码之间的相互调用。...
    琅琊Man阅读 1,005评论 2 0