使用Python进行网页爬取

admin 2024年7月31日16:08:35评论18 views字数 3298阅读10分59秒阅读模式
在当今信息爆炸的时代,获取网络上的数据变得至关重要。本文将介绍如何使用Python编程语言进行网页爬取,包括爬虫基础、数据采集与分析,以及注意事项与道德规范。

1. 爬虫基础

网页爬取是指通过编写程序自动化地访问网页并提取其中的信息。Python提供了许多强大的库来帮助我们实现这一目标。
什么是网页爬取?网页爬取是指通过编写程序自动化地访问网页并提取其中的信息。这些信息可以是文本、图片、链接等,用于后续的数据分析、展示或其他用途。
Python中常用的爬虫库
    Requests:用于发送HTTP请求并获取网页内容。
    Beautiful Soup:用于解析HTML或XML文档,提取其中的数据。
    Scrapy:一个功能强大的爬虫框架,可以用于构建复杂的爬虫程序。
    如何发送HTTP请求并获取网页内容:使用Requests库可以很容易地发送HTTP请求并获取网页内容。以下是一个简单的示例代码,以百度网站为例:
    import requestsfrom bs4 import BeautifulSoupurl = 'https://www.baidu.com'response = requests.get(url)if response.status_code == 200:    html_content = response.content.decode('utf-8')  # 手动解码    soup = BeautifulSoup(html_content, 'html.parser')    # 获取网页标题    title = soup.title.string    print('网页标题:', title)    # 获取所有链接    links = soup.find_all('a')    for link in links:        print('链接:', link.get('href'))else:    print('Failed to retrieve the webpage')

    使用Python进行网页爬取

2. 数据采集与分析

数据采集是网页爬取的重要环节,通过爬虫获取的数据可以用于后续的数据分析和处理。
使用爬虫库获取网页数据:使用Requests库发送HTTP请求获取网页内容,再利用Beautiful Soup解析HTML文档提取所需信息。
现在以豆瓣top250榜单为例进行爬取
# 豆瓣电影Top250排行榜import requestsfrom bs4 import BeautifulSoupurl = 'https://movie.douban.com/top250'headers = {    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'}response = requests.get(url, headers=headers)if response.status_code == 200:    html_content = response.text    soup = BeautifulSoup(html_content, 'html.parser')    # 定位包含电影条目的元素    movie_items = soup.find_all(class_='item')    for item in movie_items:        # 提取电影名称        movie_name = item.find(class_='title').get_text()        # 提取评分        rating = item.find(class_='rating_num').get_text()        # 输出电影名称和评分        print('电影名称:', movie_name)        print('评分:', rating)        print('----------------------')else:    print('Failed to fetch the page')
注意:豆瓣爬取需要添加User-Agent,否则无法正常爬取信息,以谷歌浏览器为例,在地址栏输入about:version即可查看对应信息

使用Python进行网页爬取

数据清洗与处理在获取数据后,通常需要进行数据清洗和处理,包括去除重复数据、处理缺失值、格式转换等操作。
以下是对爬取的数据按评分大小进行分类的示例(由于网站每页仅展示25个数据项,本次爬取的数据仅限于网页前25个数据):
import requestsfrom bs4 import BeautifulSoupurl = 'https://movie.douban.com/top250'headers = {    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'}response = requests.get(url, headers=headers)if response.status_code == 200:    html_content = response.text    soup = BeautifulSoup(html_content, 'html.parser')    # 定位包含电影条目的元素    movie_items = soup.find_all(class_='item')    # 创建一个列表来存储电影名称和评分    movies = []    for item in movie_items:        # 提取电影名称        movie_name = item.find(class_='title').get_text()        # 提取评分        rating = item.find(class_='rating_num').get_text()        # 将电影名称和评分组成字典并添加到列表中        movies.append({'name': movie_name, 'rating': float(rating)})    # 按照评分排序    sorted_movies = sorted(movies, key=lambda x: x['rating'], reverse=True)    # 输出排序后的电影名称和评分    for movie in sorted_movies:        print('电影名称:', movie['name'])        print('评分:', movie['rating'])        print('----------------------')else:    print('Failed to fetch the page')

使用Python进行网页爬取

使用Python进行网页爬取

数据存储可以将爬取的数据保存到本地文件(如CSV、Excel)或数据库(如SQLite、MySQL)中,方便后续分析和使用。
以下是将梳理的结果保存到Excel表中的示例(一页只有25个):
##保存结果到excel文件中import openpyxlworkbook = openpyxl.Workbook()sheet = workbook.activesheet.append(['电影名称', '评分'])for movie in sorted_movies:    sheet.append([movie['name'], movie['rating']])workbook.save(r'C:UsersralapDesktopPython豆瓣电影Top250.xlsx')

使用Python进行网页爬取

5. 注意事项与道德规范

在进行网页爬取和自动化操作时,我们需要遵守一些注意事项和道德规范,以确保我们的行为合法、合规且符合道德标准。
尊重网站所有者的隐私政策和使用条款:在进行网页爬取时,务必尊重网站所有者的隐私政策和使用条款。遵守网站的规定,不要违反其规定获取数据,具体可通过网站的robots.txt文件了解爬取策略。
避免对网站造成过大负担,合理设置爬取频率:在编写爬虫程序时,应该合理设置爬取频率,避免对网站服务器造成过大负担。频繁的请求可能导致网站响应缓慢甚至崩溃,这是需要避免的行为。
遵守网络爬虫的道德规范,不做非法、恶意的爬取行为:在进行网页爬取时,必须遵守网络爬虫的道德规范,不得进行非法、恶意的爬取行为。不得未经授权地获取敏感信息或侵犯他人的合法权益。

原文始发于微信公众号(网络个人修炼):使用Python进行网页爬取

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月31日16:08:35
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   使用Python进行网页爬取https://cn-sec.com/archives/2994594.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息