当前位置:   article > 正文

python网络爬虫爬取静态网页_python爬取静态网站

python爬取静态网站

目录

网络爬虫的概述

概念:

爬取数据目的:

Python做爬虫优势

爬虫爬取数据步骤

爬虫请求模块

解析网络数据

re模块的使用

requests库爬取静态网页 

安装requests库:在命令提示符cmd里面进行requests库的下载

导入requests库:

发送HTTP请求并获取响应:

检查响应状态码:

获取网页内容:

实例爬取豆瓣电影

请注意以下几点:

结尾总结: 


网络爬虫的概述

概念:

  • 网络爬虫又称网页蜘蛛、网络机器人,是一种按照一定的规则、自动请求万维网网站并提取网络数据的程序或脚本。
  • 如果说网络像一张网,那么爬就是网上的一只小电子,在网上爬行的过程中遇到了数据,就把它爬取下来。

网络爬虫的常用功能:如图所示。

爬取数据目的:

获取大量数据,用来做数据分析

公司项目的测试数据,公司业务所需数据

Python做爬虫优势

  1. Python :请求模块、解析模块丰富成熟,强大的Scrapy网络爬虫框架
  2. PHP :对多线程、异步支持不太好
  3. JAVA:代码笨重,代码量大
  4. C/C++:虽然效率高,但是代码成型慢

爬虫爬取数据步骤

  1. 确定需要爬取的URL地址
  2. 由请求模块向URL地址发出请求,并得到网站的响应
  3. 从响应内容中提取所需数据
  4. 所需数据保存
  5. 页面中有其他需要继续跟进的URL地址,继续第2步去发请求,如此循环

拓展:XML、JSON的在线工具https://www.sojson.com/ 

爬虫请求模块

模块名及导入urllib.request

urllib 库是 Python 内置的 HTTP 请求库,它可以看做是处理URL的组件集合。

  • 模块名:urllib.request
  • 导入方式:
  1. import urllib.request
  2. from urllib import request
  •  使用方法:
  1. req = request.Request(url,headers=headers)
  2. res = request.urlopen(req)
  3. html = res.read().decode('utf-8')

解析网络数据

  1. Python 中提供了多种解析网页数据的技术,包括正则表达式XPathBeautifulSoupJSONPath
  2. 正则表达式是一种文本模式,这种模式描述了匹配字符串的规则,用于检索字符串中是否有符合该模式的子串,或者对匹配到的子串进行替换。正则表达式的优点是功能强大,应用广泛,缺点是只适合匹配文本的字面意义而不适合匹配文本意义。
  3. XPath是XML路径语言,用于从HTML或XML格式的数据中提取所需的数据XPath适合处理层次结构比较明显的数据,它能够基于HTML或XML的节点树确定目标节点所在的路径,顺着这个路径便可以找到节点对应的文本或属性值。
  4. Beautiful Soup 是一个可以从HTML或XML文件中提取数据的 Python 库它同样可以使用XPath语法提取数据,并且也在此基础上做了方便开发者的封装,提供了更多选取节点的方式。
  5. JSONPath的作用类似XPath,它也是以表达式的方式解析数据的,但只能解析JSON格式的数据。

re模块的使用

 Selenium的安装方式非常简单,可以直接使用 pip 命令安装,具体的安装命令如下:

pip install selenium==3.141.0

requests库爬取静态网页 

  1. 安装requests库:在命令提示符cmd里面进行requests库的下载

    pip install requests
    
  2. 导入requests库:

    import requests
  3. 发送HTTP请求并获取响应:

    1. url = 'https://example.com' # 替换为你要爬取的网页URL
    2. response = requests.get(url)
  4. 检查响应状态码:

    1. if response.status_code == 200:
    2. print('请求成功')
    3. else:
    4. print('请求失败')
  5. 获取网页内容:

    1. html_content = response.text
    2. print(html_content)
  6. 实例爬取豆瓣电影

    1. import requests
    2. from bs4 import BeautifulSoup
    3. from selenium import webdriver
    4. from selenium.webdriver.chrome.options import Options
    5. def get_html(url):
    6. # 使用Selenium模拟浏览器行为
    7. chrome_options = Options()
    8. chrome_options.add_argument('--headless') # 无头浏览器模式,避免真实显示浏览器窗口
    9. driver = webdriver.Chrome(options=chrome_options)
    10. driver.get(url)
    11. return driver.page_source
    12. def parse_html(html):
    13. # 使用BeautifulSoup解析HTML内容
    14. soup = BeautifulSoup(html, 'lxml')
    15. # 这里可以使用BeautifulSoup的方法来提取你需要的数据
    16. # 例如,提取所有的电影名称
    17. movie_names = soup.select('.title')
    18. # 处理电影名称的文本内容
    19. for name in movie_names:
    20. print(name.text)
    21. url = 'https://movie.douban.com/'
    22. html = get_html(url)
    23. parse_html(html)
    请注意以下几点:
  • 在使用Selenium模拟浏览器行为时,需要安装Chrome驱动(即chromedriver),并将其路径添加到系统环境变量中,或者在代码中指定其路径。
  • 在使用BeautifulSoup解析HTML内容时,可以根据需要选择不同的解析器(如'lxml'、'html.parser'等)。同时,可以根据目标网页的结构选择合适的CSS选择器或XPath来提取所需的数据。
  • 在爬取网页时,需要遵守网站的robots.txt文件和使用条款,避免频繁访问或恶意攻击。此外,要尊重网站的隐私政策和反爬虫机制,不要使用过于激进的方法进行爬取。

结尾总结: 

        经过这一次爬虫的学习,可以说是对老师之前所讲的知识的一个巩固,无论是列表,字典,又或者是字符串的操作,又或者是文件操作,以及爬虫相关的知识全都用上了。同时,这一次也让自己学会了很多东西,比如是自己在做的时候有遇到许多问题,比如是自己因为没有加入时间间隔去访问,会经常503访问异常,同时加入了时间间隔,有时也会出现,就需要我们递归重新调用该函数重新爬取数据。又或者是对文本的处理,对他们保存的格式,让他们看起来更加的方便,以及CSV格式的保存。这一次的爬虫课程设计,不仅仅是一次作业,更是对自己这一个学期以来学习的回顾,也是提高自己python编程能力,以及自己思考问题的方式。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/1006807
推荐阅读
相关标签
  

闽ICP备14008679号