豆瓣图书top250爬取

# 导入相应的库文件
from lxml import etree
import urllib.request
import csv

# 创建csv
fp = open('doubanbooktop250.csv', 'wt', newline='', encoding='utf-8')
writer = csv.writer(fp)
writer.writerow(('name', 'url', 'author', 'publisher', 'date', 'price',  'rate', 'comment'))
base_url = "https://book.douban.com/top250?start={0}"
# 构造url
def get_max_page():
    urls = []#返回的url储存到一个列表中
    for page in range(0,250,25):
        url_format = base_url.format(str(page))
        urls.append(url_format)
    return urls
urls=get_max_page()

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 '
                  '(KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'
}

for url in urls:
    request = urllib.request.Request(url,headers=headers)
    response = urllib.request.urlopen(request)
    htmls = response.read().decode("utf-8")
    content = etree.HTML(htmls)
    infos = content.xpath('//tr[@class="item"]')
    for info in infos:
        name = info.xpath('./td/div/a/@title')[0]
        url = info.xpath('./td/div/a/@href')[0]
        book_infos = info.xpath('./td/p/text()')[0]
        author = book_infos.split('/')[0]         #split()方法切片
        publisher = book_infos.split('/')[-3]
        date = book_infos.split('/')[-2]
        price = book_infos.split('/')[-1]
        rate = info.xpath('./td/div/span[2]/text()')[0]
        comments = info.xpath('./td/p/span/text()')
        comment = comments[0] if len(comments) != 0 else "空"#判断评语是否为空
        writer.writerow((name, url, author, publisher, date, price, rate, comment))#结果写入

fp.close()

爬取结果
在这里插入图片描述

爬取豆瓣读书Top250的数据通常涉及网络爬虫技术,这是一个常见的数据抓取和数据分析项目。以下是大致的步骤: 1. **明确目标**:首先,你需要访问豆瓣读书Top250的页面(https://book.douban.com/top250/)以确定数据结构。 2. **分析网页结构**:查看网页源代码或使用开发者工具检查数据是如何呈现的。可能包含HTML、JSON或API接口。 3. **选择爬取方法**: - 如果是直接从HTML获取,可能需要使用如Python的BeautifulSoup或Scrapy等库来解析网页。 - 如果网站提供了API,那么使用API会更方便,但要确保遵循其使用规定,可能需要注册应用或处理OAuth授权。 4. **编写爬虫脚本**:使用Python的requests库发送HTTP请求,然后处理返回的HTML或API响应。对于爬取数据,通常需要解析title、作者、评分、简介等信息。 5. **数据存储**:将抓取到的数据保存到文件(如CSV、JSON或数据库)中,方便后续分析。 6. **异常处理和反爬策略**:注意可能遇到的验证码、动态加载、速率限制等问题,可能需要设置延时、代理或使用Selenium等工具模拟浏览器行为。 7. **合法性**:在进行爬取之前,确保你的行为符合网站的使用政策,尊重版权并避免对服务器造成过度压力。 **相关问题--:** 1. 豆瓣读书的API接口可用吗?如果可用,如何使用? 2. 如何处理HTML中的JavaScript数据,如果数据不在静态HTML里? 3. 为了防止被豆瓣封禁,应该如何合理设置爬虫的频率和策略?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值