Python 爬虫入门教程:从零构建你的第一个网络爬虫

打印 上一主题 下一主题

主题 762|帖子 762|积分 2286

网络爬虫是一种自动化程序,用于从网站抓取数据。Python 依附其丰富的库和简单的语法,是构建网络爬虫的抱负语言。本文将带你从零开始学习 Python 爬虫的基本知识,并实现一个简单的爬虫项目。

1. 什么是网络爬虫?

网络爬虫(Web Crawler)是一种通过网络协议(如 HTTP/HTTPS)获取网页内容,并提取此中有用信息的程序。常见的爬虫用途包罗:


  • 收集商品代价和评价。
  • 抓取新闻或博客内容。
  • 统计数据分析。
爬虫工作原理


  • 发送 HTTP 请求到目的网站。
  • 获取服务器返回的 HTML 页面。
  • 解析 HTML 内容,提取所需数据。
  • 保存数据以供后续使用。

2. 爬虫的基本工具

在 Python 中,我们可以使用以下工具和库来构建爬虫:
2.1 requests

requests 是一个强大的 HTTP 库,用于发送网络请求,获取网页内容。
安装:
  1. pip install requests
复制代码
示例:
  1. import requests
  2. url = "https://example.com"
  3. response = requests.get(url)
  4. print(response.text) # 打印网页内容
复制代码
2.2 BeautifulSoup

BeautifulSoup 是一个解析 HTML 和 XML 的库,用于从网页中提取数据。
安装:
  1. pip install beautifulsoup4
复制代码
示例:
  1. from bs4 import BeautifulSoup
  2. html = "<html><body><h1>Hello, World!</h1></body></html>"
  3. soup = BeautifulSoup(html, "html.parser")
  4. print(soup.h1.text)  # 输出 "Hello, World!"
复制代码
2.3 pandas

pandas 是一个用于数据处置惩罚和分析的库,得当将爬取的数据保存到 CSV 或 Excel。
安装:
  1. pip install pandas
复制代码
示例:
  1. import pandas as pd
  2. data = {"Title": ["Example"], "Link": ["https://example.com"]}
  3. df = pd.DataFrame(data)
  4. df.to_csv("output.csv", index=False)
复制代码

3. 爬虫案例:抓取豆瓣电影排行榜

下面我们将构建一个爬虫,从豆瓣电影的网页抓取电影排行榜。
3.1 准备工作

目的网址: https://movie.douban.com/top250
我们将抓取以下信息:


  • 电影名称
  • 评分
  • 引言
3.2 代码实现

  1. import requests
  2. from bs4 import BeautifulSoup
  3. import pandas as pd
  4. # 爬取一个页面的数据
  5. def scrape_page(url):
  6.     headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"}
  7.     response = requests.get(url, headers=headers)
  8.     soup = BeautifulSoup(response.text, "html.parser")
  9.    
  10.     movies = []
  11.     for item in soup.find_all("div", class_="item"):
  12.         title = item.find("span", class_="title").text
  13.         rating = item.find("span", class_="rating_num").text
  14.         quote = item.find("span", class_="inq").text if item.find("span", class_="inq") else "N/A"
  15.         movies.append({"Title": title, "Rating": rating, "Quote": quote})
  16.    
  17.     return movies
  18. # 主程序:爬取多页
  19. def main():
  20.     base_url = "https://movie.douban.com/top250?start={}"
  21.     all_movies = []
  22.    
  23.     for i in range(0, 250, 25):  # 每页 25 部电影
  24.         url = base_url.format(i)
  25.         print(f"Scraping: {url}")
  26.         movies = scrape_page(url)
  27.         all_movies.extend(movies)
  28.    
  29.     # 保存为 CSV 文件
  30.     df = pd.DataFrame(all_movies)
  31.     df.to_csv("douban_top250.csv", index=False)
  32.     print("Scraping complete! Data saved to douban_top250.csv")
  33. if __name__ == "__main__":
  34.     main()
复制代码
3.3 代码解析


  • 设置请求头: 模仿欣赏器访问,避免被反爬机制屏蔽。
  • BeautifulSoup 提取内容: 使用 find 和 find_all 定位 HTML 标签,提取标题、评分和引言。
  • 循环抓取多页: 构造分页 URL,逐页爬取。
  • 保存为 CSV: 使用 pandas 将数据存储为 CSV 文件。

4. 运行与效果

运行程序后,将天生 douban_top250.csv 文件,内容如下:


5. 注意事项

5.1 服从爬虫的礼仪


  • 公道设置耽误: 在抓取页面时加入适当的延时,避免对服务器造成压力。
  • 检查 robots.txt: 访问目的网站的 https://example.com/robots.txt 查看答应抓取的内容。
  • 请求头伪装: 使用 User-Agent 模仿欣赏器访问。
5.2 反爬机制应对

如果遇到反爬机制,可以尝试:


  • 使用署理 IP。
  • 处置惩罚动态内容(如 JavaScript 加载的页面)。
  • 使用更高级的库如 selenium 或 Playwright。

6. 总结与扩展

通过本文,我们学习了使用 Python 构建基本爬虫的流程,并完成了一个抓取豆瓣电影 Top250 的项目。你可以将爬虫技术扩展到更复杂的应用场景,比如:


  • 动态加载数据的网站(如使用 selenium 或 requests-html)。
  • 数据洗濯与可视化(结合 pandas 和 matplotlib)。
  • 大规模爬取(结合分布式爬虫框架如 Scrapy)。
在实际应用中,记得服从法律法规和网站的爬虫协议,公道使用网络爬虫技术!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连密封材料

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表