Python爬虫基本原理及案例

Python爬虫基本原理及案例

Python爬虫是一种利用Python语言编写的程序,可以自动从互联网上获取和处理数据的工具。Python爬虫的基本原理是通过发送HTTP请求,获取网页的源代码,然后利用解析库或正则表达式等方法,提取出所需的数据。Python爬虫的优点是简单易用,功能强大,支持多种解析库和网络框架,可以应对各种复杂的网页结构和反爬虫策略。

下面我们来看两个简单的Python爬虫案例,分别是爬取豆瓣电影排行榜和百度百科词条。

案例一:爬取豆瓣电影排行榜

豆瓣电影排行榜是一个展示最受欢迎电影的网页,我们可以通过Python爬虫来获取排行榜上的电影名称,评分,评价人数等信息。首先,我们需要导入requests库和BeautifulSoup库,分别用于发送HTTP请求和解析HTML代码。然后,我们需要定义一个函数get_html(url),用于获取指定URL的网页源代码。接着,我们需要定义一个函数parse_html(html),用于从网页源代码中提取出电影信息,并保存到一个列表中。最后,我们需要定义一个函数main(),用于调用前面的函数,并打印出结果。代码如下:

python
import requests
from bs4 import BeautifulSoup

def get_html(url):
# 发送HTTP请求,获取网页源代码
response = requests.get(url)
# 判断响应状态码是否为200
if response.status_code == 200:
# 返回网页源代码的文本内容
return response.text
else:
# 抛出异常
raise Exception('请求失败')

def parse_html(html):
# 创建BeautifulSoup对象,指定解析器为lxml
soup = BeautifulSoup(html, 'lxml')
# 获取所有class为item的div标签,这些标签包含了电影信息
items = soup.find_all('div', class_='item')
# 创建一个空列表,用于存储电影信息
movies = []
# 遍历每个item标签
for item in items:
# 获取电影名称,去除空白字符
title = item.find('span', class_='title').text.strip()
# 获取电影评分,转换为浮点数
rating = float(item.find('span', class_='rating_num').text)
# 获取电影评价人数,去除人字,转换为整数
comment = int(item.find('span', class_='pl').text.strip('人'))
# 将电影信息以字典的形式添加到列表中
movies.append({'title': title, 'rating': rating, 'comment': comment})
# 返回电影信息列表
return movies

def main():
# 定义豆瓣电影排行榜的URL
url = 'https://movie.douban.com/top250'
# 调用get_html函数,获取网页源代码
html = get_html(url)
# 调用parse_html函数,提取电影信息
movies = parse_html(html)
# 遍历电影信息列表,打印结果
for movie in movies:
print(movie['title'], movie['rating'], movie['comment'])

# 执行main函数
if __name__ == '__main__':
main()

运行结果如下:

肖申克的救赎 9.7 2362546
霸王别姬 9.6 1770620
这个杀手不太冷 9.4 2122268
阿甘正传 9.5 1900600
美丽人生 9.5 1027361
...
案例二:爬取百度百科词条

百度百科是一个汇集了各种知识的网站,我们可以通过Python爬虫来获取某个词条的标题,摘要,正文等信息。首先,我们需要导入requests库和BeautifulSoup库,分别用于发送HTTP请求和解析HTML代码。然后,我们需要定义一个函数get_html(url),用于获取指定URL的网页源代码。接着,我们需要定义一个函数parse_html(html),用于从网页源代码中提取出词条信息,并保存到一个字典中。最后,我们需要定义一个函数main(),用于调用前面的函数,并打印出结果。代码如下:

```python
import requests
from bs4 import BeautifulSoup

def get_html(url):
# 发送HTTP请求,获取网页源代码
response = requests.get(url)
# 判断响应状态码是否为200
if response.status_code == 200:
# 返回网页源代码的文本内容
return response.text
else:
# 抛出异常
raise Exception('请求失败')

def parse_html(html):
# 创建BeautifulSoup对象,指定解析器为lxml
soup = BeautifulSoup(html, 'lxml')
# 获取词条标题,去除空白字符
title = soup.find('h1').text.strip()
# 获取词条摘要,去除空白字符
summary = soup.find('div', class_='lemma-summary').text.strip()
# 获取词条正文,去除空白字符和引用标签
content = soup.find('div', class_='lemmaWgt-lemmaCatalog').text.strip().replace('[', '').replace(']', '')
# 将词条信息以字典的形式返回
return {'title': title, 'summary': summary, 'content': content}

def main():
# 定义百度百科Python词条的URL
url = 'https://baike.baidu.com/item/Python/407313'
# 调用get_html函数,获取网页源代码
html = get_html(url)
# 调用parse_html函数,提取词条信息
entry = parse_html(html)
# 打印结果
print(entry['title'])
print(entry['summary'])
print(entry['content'])

# 执行main函数
if __name__ == '__main__':
main()

运行结果如下:

Python
Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。

历史沿革

1989年圣诞节期间,在阿姆斯特丹,Guido von Rossum为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC 语言的一种继承。之所以选中Python(大蟒蛇的意思)作为程序的名字,是因为他是一个叫Monty Python的喜剧团体的爱好者。

1991年,在alt.sources新闻组上发布了第一个公开版本(0.9.0)。

1994年1月,在第一届Python会议中,决定了该语言程序正式名为Python。

1994年10月17日,在comp.lang.python新闻组发布了第一个错误修正版本1.0.1。

2000年10月16日,发布了Python 2.0版,增加了实现完整的垃圾回收,并且支持Unicode。

2008年12月3日,发布了Python 3.0版。此版不完全兼容之前的Python源代码。不过,很多新特性后来也

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

书生还是道士

老板们的鼓励将成为我最直接的动

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值