一个入门级Python爬虫教程详解
本教程旨在介绍基本的Python爬虫知识,帮助初学者了解如何使用Python爬取网页内容。在本教程中,我们使用BeautifulSoup、Requests等库来实现。
1. 安装必要的库
为了使用Python爬虫,需要安装以下库:
pip install requests
pip install beautifulsoup4
2. 爬取网页内容
通常爬虫的第一步是获取要爬取的网页,这可以使用Requests库来完成。下面是一个简单的例子:
import requests
r = requests.get('http://example.com')
print(r.text)
上面的代码获取http://example.com
的源代码,并打印在屏幕上。这里的text
属性是requests.get()
方法返回的一个表示网页内容的字符串。
3. 解析网页内容
在得到网页内容后,我们需要从中提取有用的信息。这可以使用BeautifulSoup库来完成。BeautifulSoup是一个用于解析HTML和XML文档的Python库,并且易于使用。
from bs4 import BeautifulSoup
page = requests.get('http://example.com')
soup = BeautifulSoup(page.text, 'html.parser')
print(soup.prettify())
上面的代码将获取http://example.com
的源代码,然后将其传递给BeautifulSoup对象进行解析。prettify()
方法用于将结果以格式化的方式打印在屏幕上。
4. 提取信息
现在我们已经成功地解析了网页,接下来可以从中提取有用的信息。例如,假设我们需要提取http://example.com
的标题,则可以使用以下代码:
from bs4 import BeautifulSoup
page = requests.get('http://example.com')
soup = BeautifulSoup(page.text, 'html.parser')
print(soup.title.string)
这里的soup.title.string
表示网页的标题。其中,title
是HTML代码中的标签,.string
则取出标签中的文本内容。
5. 示例:爬取豆瓣电影Top250
下面我们将使用以上所述的方法爬取豆瓣电影Top250的信息。具体爬取过程如下:
import requests
from bs4 import BeautifulSoup
url = 'https://movie.douban.com/top250'
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.3'}
r = requests.get(url, headers=headers)
soup = BeautifulSoup(r.text, 'html.parser')
movies_list = soup.find('ol', {'class': 'grid_view'})
for movie in movies_list.find_all('li'):
title = movie.find('span', {'class': 'title'}).text
rating = movie.find('span', {'class': 'rating_num'}).text
print(title, rating)
上述代码实现了以下功能:
- 设定User-Agent标头,使得爬虫程序模仿浏览器行为,让爬虫不被服务器识别为机器人;
- 从https://movie.douban.com/top250
获取网页HTML;
- 调用BeautifulSoup库进行解析,并找到网页中的电影列表;
- 遍历电影列表,并提取出每个电影的名称和分数。
6. 示例:爬取当当图书信息
下面我们再来看一个使用Python爬虫爬取网页信息的例子。该例子爬取当当网站上Python书籍的信息。
import requests
from bs4 import BeautifulSoup
url = 'http://search.dangdang.com/?key=python&act=input'
# 设定User-Agent标头
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.3'}
r = requests.get(url, headers=headers)
soup = BeautifulSoup(r.text, 'html.parser')
books_list = soup.find('ul', {'class': 'bigimg'})
for book in books_list.find_all('li'):
name = book.find('a', {'class': 'pic'}).get('title')
price = book.find('p', {'class': 'price'}).text.strip()
rating = book.find('div', {'class': 'star'}).find('span', {'class': 'rating_nums'}).text
print(name, price, rating)
上述代码实现了以下功能:
- 设定User-Agent标头;
- 从当当网站搜索结果页面获取网页HTML;
- 调用BeautifulSoup库进行解析,并找到网页中的书籍列表;
- 遍历书籍列表,并提取出每个书籍的名称、价格、评分。
到此为止,我们已经学习了如何使用Python爬虫爬取网页信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一个入门级python爬虫教程详解 - Python技术站