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
  • 导入方式:
   import urllib.request
   from urllib import request
  •  使用方法:
req = request.Request(url,headers=headers)
	 res = request.urlopen(req)
     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请求并获取响应:

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

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

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

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

结尾总结: 

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

  • 46
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scrapy是一个强大的Python爬虫框架,可以帮助你轻松地爬取静态网页多页数据。以下是一个简单的示例代码,可以帮助你开始: 首先,你需要创建一个新的Scrapy项目。在命令行中输入以下命令: ``` scrapy startproject myproject ``` 接下来,创建一个新的Spider。在项目的根目录下,使用以下命令: ``` scrapy genspider myspider example.com ``` 这将创建一个名为`myspider`的新Spider,并将其设置为爬取`example.com`域名下的数据。 接下来,在新创建的Spider中添加以下代码: ```python import scrapy class MySpider(scrapy.Spider): name = "myspider" start_urls = ["http://example.com/page=1"] def parse(self, response): # 解析网页内容,并提取你需要的数据 # ... # 检查是否还有下一页 next_page = response.css(".next-page-link ::attr(href)").extract_first() if next_page: yield scrapy.Request(url=next_page, callback=self.parse) ``` 在上面的代码中,`start_urls`变量包含了你要爬取的第一页的URL。在`parse()`方法中,你需要解析网页内容并提取你需要的数据。接下来,使用`response.css()`和`response.xpath()`方法找到你需要的数据。 最后,使用`response.css()`方法找到下一页的URL,并使用`scrapy.Request()`方法创建一个新的请求。将请求的URL设置为下一页的URL,并将`callback`参数设置为`self.parse`,以便在获取下一页的内容时继续调用`parse()`方法。 现在,你可以在命令行中使用以下命令运行Spider: ``` scrapy crawl myspider ``` 这将开始爬取第一页的内容,并继续爬取所有下一页的内容。在每个页面上,你可以使用`parse()`方法提取你需要的数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值