Python爬⾍入⻔--实例代码 | 4 爬取⾖豆瓣TOP250图书信息
### Python爬虫入门——实例代码:爬取豆瓣TOP250图书信息 #### 知识点一:Python爬虫基础及目标网站分析 在进行任何爬虫开发之前,理解目标网站结构至关重要。本实例中,目标是爬取豆瓣图书TOP250页面上的图书信息,包括书名、链接、评分等。 1. **目标网站分析**: - 网址:https://book.douban.com/top250 - 网站结构:网页主要由一系列图书条目组成,每个条目包含书名、作者、出版社、评分、简介等信息。 - 数据格式:网页数据通过HTML标签组织,其中书名和评分等关键信息嵌套在复杂的DOM结构中。 2. **爬虫基础知识**: - 使用语言:Python - 常用库:`requests`用于发送HTTP请求,`BeautifulSoup`用于解析HTML文档。 #### 知识点二:爬取单个信息 爬虫开发的第一步通常是从简单的任务开始,逐步增加复杂性。本实例从爬取单个图书名称开始。 1. **定位元素**: - 使用XPath定位:XPath是一种在XML文档中查找信息的语言,也可以应用于HTML文档。例如,《追风筝的人》的XPath为: ``` //*[contains(@id, "content")]/div/div[1]/div/table/tr/td[2]/div[1]/a ``` - 浏览器复制的XPath可能包含多余标签,如`<tbody>`等,需要手动调整。 2. **编写爬虫代码**: - 示例代码: ```python from bs4 import BeautifulSoup import requests url = 'https://book.douban.com/top250' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') # 定位书名 book_title_xpath = '//*/div[1]/div/table/tr/td[2]/div[1]/a/@title' book_titles = [title.get_text() for title in soup.xpath(book_title_xpath)] ``` 3. **通用XPath**: - 通过对不同图书XPath的对比分析,可以总结出一个通用XPath: ``` //*[contains(@id, "content")]/div/div[1]/div/table/tr/td[2]/div[1]/a/@title ``` - 此XPath可以用于爬取所有图书的名称。 #### 知识点三:爬取多个信息 一旦掌握了爬取单个信息的方法,就可以扩展到爬取更多种类的信息,如评分、简介等。 1. **爬取评分**: - 评分的XPath与书名类似,只需将XPath中的`div[1]`替换为`div[2]/span[2]`: ``` //*[contains(@id, "content")]/div/div[1]/div/table/tr/td[2]/div[2]/span[2] ``` - 示例代码: ```python # 定位评分 rating_xpath = '//*/div[1]/div/table/tr/td[2]/div[2]/span[2]' ratings = [rating.get_text() for rating in soup.xpath(rating_xpath)] ``` 2. **确保数据一致性**: - 当同时爬取多个信息时,需要注意确保数据的一致性,即每本书的相关信息应成对出现。 - 为了实现这一点,可以通过定位每本书的整体元素来提取信息: ``` //*[contains(@id, "content")]/div/div[1]/div/table[1] ``` - 使用此XPath可以确保爬取的数据是完整的且对应关系正确。 #### 知识点四:完整爬虫代码示例 将以上步骤整合为一个完整的爬虫脚本: ```python from bs4 import BeautifulSoup import requests url = 'https://book.douban.com/top250' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') # 定义通用XPath base_xpath = '//*/div[1]/div/table' titles = [] ratings = [] # 遍历每本书 for i, table in enumerate(soup.xpath(base_xpath)): # 获取书名 title_xpath = './tr/td[2]/div[1]/a/@title' title = table.xpath(title_xpath)[0].get_text() titles.append(title) # 获取评分 rating_xpath = './tr/td[2]/div[2]/span[2]' rating = table.xpath(rating_xpath)[0].get_text() ratings.append(rating) # 打印结果 for i in range(len(titles)): print(f"书名: {titles[i]}, 评分: {ratings[i]}") ``` #### 总结 通过以上实例,我们不仅学习了如何利用Python和XPath技术爬取特定网站上的信息,还了解了如何处理HTML结构、提取所需数据并确保数据一致性。这些技能对于构建更复杂的应用程序或数据收集项目非常有用。在实际应用中,还需要注意遵守相关法律法规,尊重网站的爬虫政策,避免过度抓取导致服务器负担过重。






















剩余9页未读,继续阅读


- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 2023年浙江省第四届大学生电子商务竞赛获奖作品公示.doc
- 无线智能家居系统解决方案.ppt
- 基于clementine的数据挖掘算法决策树.ppt
- 2023年office一级考试选择题计算机基础知识附答案.docx
- 网络改造升级方案.doc
- 信息化教学设计的过程、方法与案例.ppt
- 农产品网络营销.ppt
- 基于51单片机的呼吸灯设计C语言.doc
- 会计应学鲜为人知的Excel技巧1【会计实务操作教程】.pptx
- 数据库课程设计—零件管理系统.doc
- 国家网络安全宣传周学习心得体会4篇.docx
- 云计算导论模拟试题期末考试题带答案AB卷.docx
- 软件技术基础实验指导书.doc
- 2023年新版计算机基础题库资料.doc
- 网络安全宣传周演讲稿.doc
- 分布式CFAR融合检测算法研究.pptx


