基于urllib和re模块的爬虫简单实战

简介: 基于基础库的简单实战爬取目标是千古刘传在豆瓣上的分享书单,网址为https://www.douban.com/doulist/44773558/明确爬取目标:书名作者出版社出版年豆瓣评分刘传评语查看网页构造:代码:from urllib import requesturl = 'https://www.

基于基础库的简单实战

爬取目标是千古刘传在豆瓣上的分享书单,网址为https://www.douban.com/doulist/44773558/

明确爬取目标:

  • 书名
  • 作者
  • 出版社
  • 出版年
  • 豆瓣评分
  • 刘传评语

查看网页构造:

img_269ba9ead0a1f5d490a657b49429f332.png

代码:

from urllib import request
url = 'https://www.douban.com/doulist/44773558/'

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36',
    'Host':'www.douban.com'
}

req = request.Request(url=url,headers=headers)
response = request.urlopen(req)
# 在这里我遇到了UnicodeEncodeError,在Windows的ipython中没有出现,在Linux的ipython中出现,在普通模式下没有问题。
content = response.read().decode('utf-8')

# 尝试提取信息
# 尽量使用非贪婪模式
import re 
pattern = re.compile('<div.*?doulist-item.*?"title">.*?"_blank">(.*?)</a>.*?"rating_nums">(.*?)</span>.*?"abstract">(.*?)</div>.*?"comment">(.*?)</blockquote>.*?</div>',re.S)

results = re.findall(pattern,content)

# 数据整理
for result in results:
    title,rating_nums,abstract,comment=result
    author,publisher,year= abstract.split('<br />')
    author = re.sub('\s',auhtor)
    publisher = re.sub('\s',publisher)
    print(title,rating_nums,author,publisher,year,comment)

然后修改url为'https://www.douban.com/doulist/44773558/?',就可以把第二页的内容。
以上就是学习了urllib和正则表达式能做的简单操作。

一些心得

在解析网页内容时避免使用贪婪模式,不然可能会滤过一些符合条件的匹配。
写正则表达式是一件非常考验经验的活,需要多练习。
urllib库果然不太好用,下次用request库。

目录
相关文章
|
9月前
|
数据采集 弹性计算 Kubernetes
单机扛不住,我把爬虫搬上了 Kubernetes:弹性伸缩与成本优化的实战
本文讲述了作者在大规模爬虫项目中遇到的挑战,包括任务堆积、高失败率和成本失控。通过将爬虫项目迁移到Kubernetes并使用HPA自动伸缩、代理池隔离和Redis队列,作者成功解决了这些问题,提高了性能,降低了成本,并实现了系统的弹性伸缩。最终,作者通过这次改造学到了性能、代理隔离和成本控制的重要性。
299 2
单机扛不住,我把爬虫搬上了 Kubernetes:弹性伸缩与成本优化的实战
|
8月前
|
数据采集 Web App开发 数据安全/隐私保护
实战:Python爬虫如何模拟登录与维持会话状态
实战:Python爬虫如何模拟登录与维持会话状态
|
8月前
|
数据采集 运维 监控
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
本文系统解析爬虫与自动化核心技术,涵盖HTTP请求、数据解析、分布式架构及反爬策略,结合Scrapy、Selenium等框架实战,助力构建高效、稳定、合规的数据采集系统。
1245 62
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
|
8月前
|
数据采集 机器学习/深度学习 人工智能
反爬虫机制深度解析:从基础防御到高级对抗的完整技术实战
本文系统阐述了反爬虫技术的演进与实践,涵盖基础IP限制、User-Agent检测,到验证码、行为分析及AI智能识别等多层防御体系,结合代码实例与架构图,全面解析爬虫攻防博弈,并展望智能化、合规化的发展趋势。
2855 62
反爬虫机制深度解析:从基础防御到高级对抗的完整技术实战
|
10月前
|
数据采集 JSON Java
Java爬虫获取1688店铺所有商品接口数据实战指南
本文介绍如何使用Java爬虫技术高效获取1688店铺商品信息,涵盖环境搭建、API调用、签名生成及数据抓取全流程,并附完整代码示例,助力市场分析与选品决策。
|
10月前
|
数据采集 数据挖掘 测试技术
Go与Python爬虫实战对比:从开发效率到性能瓶颈的深度解析
本文对比了Python与Go在爬虫开发中的特点。Python凭借Scrapy等框架在开发效率和易用性上占优,适合快速开发与中小型项目;而Go凭借高并发和高性能优势,适用于大规模、长期运行的爬虫服务。文章通过代码示例和性能测试,分析了两者在并发能力、错误处理、部署维护等方面的差异,并探讨了未来融合发展的趋势。
1031 0
|
8月前
|
数据采集 监控 数据库
Python异步编程实战:爬虫案例
🌟 蒋星熠Jaxonic,代码为舟的星际旅人。从回调地狱到async/await协程天堂,亲历Python异步编程演进。分享高性能爬虫、数据库异步操作、限流监控等实战经验,助你驾驭并发,在二进制星河中谱写极客诗篇。
Python异步编程实战:爬虫案例
|
8月前
|
数据采集 人工智能 JSON
Prompt 工程实战:如何让 AI 生成高质量的 aiohttp 异步爬虫代码
Prompt 工程实战:如何让 AI 生成高质量的 aiohttp 异步爬虫代码
|
9月前
|
数据采集 存储 XML
Python爬虫技术:从基础到实战的完整教程
最后强调: 父母法律法规限制下进行网络抓取活动; 不得侵犯他人版权隐私利益; 同时也要注意个人安全防止泄露敏感信息.
1065 19
|
10月前
|
数据采集 存储 NoSQL
Scrapy 框架实战:构建高效的快看漫画分布式爬虫
Scrapy 框架实战:构建高效的快看漫画分布式爬虫