以下是一个完整的 Python 代码示例,演示如何爬取当当网图书分类下的图书信息:

import requests
from bs4 import BeautifulSoup

url = 'http://book.dangdang.com/'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}

response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')

# 获取'图书分类'下的所有分类链接
category_links = []
for category in soup.select('.classify_books > li > a'):
    category_links.append(category['href'])

# 遍历每个分类链接,获取图书信息
for link in category_links:
    response = requests.get(link, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')

    # 获取该分类下的所有图书链接
    book_links = []
    for book in soup.select('.book_list > ul > li > p.name > a'):
        book_links.append(book['href'])

    # 遍历每个图书链接,获取图书信息
    for book_link in book_links:
        response = requests.get(book_link, headers=headers)
        soup = BeautifulSoup(response.text, 'html.parser')

        # 获取图书信息
        title = soup.select_one('.name_info > h1')['title']
        author = soup.select_one('.messbox_info > span:nth-of-type(1) > a')['title']
        publisher = soup.select_one('.messbox_info > span:nth-of-type(3) > a')['title']
        publish_date = soup.select_one('.messbox_info > span:nth-of-type(4)').text.strip()
        price = soup.select_one('.price_n > span:nth-of-type(1)').text

        # 打印图书信息
        print('书名:', title)
        print('作者:', author)
        print('出版社:', publisher)
        print('出版日期:', publish_date)
        print('价格:', price)
        print('--------------------')

该代码首先获取当当网首页,然后获取'图书分类'下的所有分类链接。接着遍历每个分类链接,获取该分类下的所有图书链接。最后遍历每个图书链接,获取图书信息并打印。

代码解析:

  1. 导入库: requests 用于发送 HTTP 请求,BeautifulSoup 用于解析 HTML 内容。
  2. 设置请求头: headers 用于模拟浏览器访问,避免被网站识别为爬虫。
  3. 获取首页: 使用 requests.get() 获取当当网首页的 HTML 内容。
  4. 解析首页: 使用 BeautifulSoup 解析首页 HTML,并使用 CSS 选择器 select() 获取'图书分类'下的所有分类链接。
  5. 遍历分类链接: 循环遍历每个分类链接,重复步骤 3 和 4 获取该分类下的所有图书链接。
  6. 遍历图书链接: 循环遍历每个图书链接,重复步骤 3 和 4 获取图书信息。
  7. 解析图书信息: 使用 CSS 选择器获取书名、作者、出版社、出版日期和价格等信息。
  8. 打印图书信息: 将获取的图书信息打印到控制台。

代码优化建议:

  • 使用 try-except 捕获可能出现的异常,避免程序崩溃。
  • 将图书信息存储到数据库或文件中,方便后续分析和使用。
  • 使用 time.sleep() 控制爬取速度,避免给网站服务器造成过大压力。
  • 使用代理 IP 隐藏真实 IP 地址,提高爬虫的稳定性。

注意: 爬取网站数据时,请遵守网站的robots协议,避免对网站造成过度负荷。

希望本教程对您有所帮助!如果您有任何疑问,欢迎在评论区留言。

Python爬取当当网图书数据:完整示例与解析

原文地址: https://www.cveoy.top/t/topic/mWWw 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录