爬虫之爬取豆瓣热门图书的名字

import requests  #requests模块用于HTTP请求
import codecs    #codecs模块用于文件操作
from bs4 import BeautifulSoup  #beautifulSoup库用于对html代码进行解析

#要爬取的地址
URL="https://book.douban.com/top250"

#user-agent,模仿浏览器,防止被目标网站反爬
HEADERS = {
    "User-Agent":"Mozilla/5.0(Macintosh; Intel Mac OS X 10_11_2 ) AppleWebKit/537.36(KHTML, like Gecko) Chrome/60.0.3202.62 Safari/537.36"
}

#定义请求特定URL页面的方法,用于多次请求
def download_page(url):
    #请求页面,获取要爬取的页面内容
    data = requests.get(url,headers=HEADERS).content
    return data

#从请求回来的特定页面中筛选出来我们需要的特定的信息
def parse_html(html):
    #使用bs解析获取的页面,测试是否可以用print(soup.pretiffy())打印查看获取的页面
    soup = BeautifulSoup(html,‘html.parser‘)

    #print(html)
    #print(soup.prettify())
    #exit()

    #利用BeautifulSoup获取要爬取的页面信息
    #查找页面中class为indent的div(首先要从页面分析出来哪个条件可以唯一定位书籍内容的div)
    book_list_soup = soup.find(‘div‘,attrs={‘class‘:‘indent‘})
    # print(book_list_soup)
    # exit()

    #定义一个数组用来存储书名信息
    book_name_list=[]

    #遍历书籍div内的信息,找到每个table元素来进行后续操作
    for book_li in book_list_soup.find_all(‘table‘):
        # print(book_li)
        # exit()
        #对每个table元素应用以下筛选逻辑
        #找到图书描述的div
        detail = book_li.find(‘div‘,attrs={‘class‘:‘pl2‘})

        #找到图书的名字所在标签,利用字符串操作得到纯粹的书名
        book_name=detail.find(‘a‘).getText().replace(‘\t‘,‘‘).replace(‘\n‘,‘‘).replace(‘ ‘,‘‘)

        #把书名添加到数组中
        book_name_list.append(book_name)  #添加到list中

    # print(book_name_list)
    # exit()
    #遍历完当前页面的书籍后,找到下一页的链接继续上面的流程来爬取书名
    next_page = soup.find(‘span‘,attrs={‘class‘:‘next‘}).find(‘a‘)

    #如果有下一页,则拼接下一页的url,继续爬取,同时返回图书名称的list
    if next_page:
        return book_name_list,next_page[‘href‘]

    #如果没有则爬虫结束,同时返回图书名称的list
    return book_name_list,None

def main():
    #局部变量url,用于记录每次爬取的页面的URL
    url=URL

    #循环变量,用于控制台显示页数
    i = 1

    #打开文件,使用utf-8编码
    with codecs.open(‘books.txt‘,‘wb‘,encoding=‘utf-8‘) as fp:
        while url:
            print(‘正在获取页数: ‘+str(i))
            i=i+1
            #调用获取页面的函数
            html = download_page(url)
            #调用过滤页面信息以得到书名的函数
            books,url=parse_html(html)
            #将获取的书名写入文件,利用format函数格式化书名列表
            fp.write(u‘{books}‘.format(books=‘\r\n‘.join(books)))

#当页面直接运行时,执行main函数
if __name__==‘__main__‘:
    main()

原文地址:https://www.cnblogs.com/lsm-boke/p/9940302.html

时间: 2024-10-08 12:28:16

爬虫之爬取豆瓣热门图书的名字的相关文章

第一个nodejs爬虫:爬取豆瓣电影图片

第一个nodejs爬虫:爬取豆瓣电影图片存入本地: 首先在命令行下 npm install request cheerio express -save; 代码: var http = require('https'); //使用https模块 var fs = require('fs');//文件读写 var cheerio = require('cheerio');//jquery写法获取所得页面dom元素 var request = require('request');//发送reques

Python爬虫入门 | 爬取豆瓣电影信息

这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑动手实践,平均45分钟就能学完一节,如果你愿意,今天内你就可以迈入爬虫的大门啦~好啦,正式开始我们的第二节课<爬取豆瓣电影信息>吧!啦啦哩啦啦,都看黑板~1. 爬虫原理1.1 爬虫基本原理听了那么多的爬虫,到底什么是爬虫?爬虫又是如何工作的呢?我们先从"爬虫原理"说起.爬虫又称为网页蜘蛛,是一种程序或脚本.但重点在于:它能够按照一定的规则,自动

爬取豆瓣网图书TOP250的信息

爬取豆瓣网图书TOP250的信息,需要爬取的信息包括:书名.书本的链接.作者.出版社和出版时间.书本的价格.评分和评价,并把爬取到的数据存储到本地文件中. 参考网址:https://book.douban.com/top250 注意:使用正则表达式时,不要在Elements选项卡中直接查看源代码,因为那的源码可能经过Javascript渲染而与原始请求不同,而是需要从Network选项卡中查看源码. import re import json import time import request

爬虫之爬取豆瓣图书的评论

from urllib import request from bs4 import BeautifulSoup as bs #爬取豆瓣最受关注图书榜 resp = request.urlopen('https://book.douban.com/chart?subcat=I') html_data = resp.read().decode('utf-8') #转化为BeautifulSoup对象 soup = bs(html_data,'html.parser') #搜索最受关注的图书列表 t

Python爬虫入门 | 4 爬取豆瓣TOP250图书信息

先来看看页面长啥样的:https://book.douban.com/top250 我们将要爬取哪些信息:书名.链接.评分.一句话评价-- 1. 爬取单个信息 我们先来尝试爬取书名,利用之前的套路,还是先复制书名的xpath: 得到第一本书<追风筝的人>的书名xpath如下: //*[@id="content"]/div/div[1]/div/table[1]/tbody/tr/td[2]/div[1]/a 得到xpath,我们就可以按照之前的方法来尝试一下: 返回的竟然是

Web Spider实战1——简单的爬虫实战(爬取&quot;豆瓣读书评分9分以上榜单&quot;)

1.Web Spider简介 Web Spider,又称为网络爬虫,是一种自动抓取互联网网页信息的机器人.它们被广泛用于互联网搜索引擎或其他类似网站,以获取或更新这些网站的内容和检索方式.它们可以自动采集所有其能够访问到的页面内容,以供搜索引擎做进一步处理(分检整理下载的页面),而使得用户能更快的检索到他们需要的信息. 2.一个简单的网络爬虫案例 作者在浏览网页的时候看到豆瓣书单的网页(首页),如下所示: 因为书单共有409本书,17个页面,若是要一个个浏览完,需要较长的时间,想要保存好书单,那

团队-张宸-需求分析-python爬虫分类爬取豆瓣电影

首先要明白爬网页实际上就是:找到包含我们需要的信息的网址(URL)列表通过 HTTP 协议把页面下载回来从页面的 HTML 中解析出需要的信息找到更多这个的 URL,回到 2 继续其次还要明白:一个好的列表应该:包含足够多的电影的 URL通过翻页,可以遍历到所有的电影一个按照更新时间排序的列表,可以更快抓到最新更新的电影最后模拟过程知道豆瓣网站不能一次性爬取所有信息,只能分类爬取使用工具pyspider分析完成实现代码,测试模拟运行,按照时间列表爬取每类最新电影资讯团队成员:张文然,张宸

团队-张文然-需求分析-python爬虫分类爬取豆瓣电影信息

首先要明白爬网页实际上就是:找到包含我们需要的信息的网址(URL)列表通过 HTTP 协议把页面下载回来从页面的 HTML 中解析出需要的信息找到更多这个的 URL,回到 2 继续其次还要明白:一个好的列表应该:包含足够多的电影的 URL通过翻页,可以遍历到所有的电影一个按照更新时间排序的列表,可以更快抓到最新更新的电影最后模拟过程知道豆瓣网站不能一次性爬取所有信息,只能分类爬取使用工具pyspider分析完成实现代码,测试模拟运行,按照时间列表爬取每类最新电影资讯 代码分解,便于加入团队后组员

【爬虫】爬取豆瓣图书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