题目

一、选择题(每题 2 分)

1、Python 中,可以用来存储数据的文件类型包括( D)

A. txt

B. csv

C. json

D. 以上所有

2、可以用来解析 XML 文档的库有哪些( B)

A. BeautifulSoup

B. lxml

C. html.parser

A. 以上所有

3、Jupyter Notebook 对 python 开发有什么帮助( D)

A. 插入数学公式

B. 制作演示文稿

C. 输入特殊关键字

D. 以上所有

4、Python 中用于进行自然语言处理的第三方库是( A)。

A. nltk

B. spacy

C. gensim

D. jieba

5、通用网络爬虫主要由哪些机构或者服务商使用(A )

A. 电商平台

B. 搜索引擎

C. 金融机构

D. 媒体平台

6、使用 urllib.request.urlopen()方法请求网页时,如果需要添加请求头信息,应该使用哪个对象( D)

A. Resquest

B. Response

C. Opener

D. Handler

7、使用 selenium 库进行动态页面抓取时,需要安装哪个组件( C)

A.Chrome 浏览器

B.Chrome 插件

C.Chrome 驱动

D.Chrome 扩展

8、使用 selenium 库进行动态页面抓取时,可以使用哪个方法模拟鼠标点击(A )

A. click()

B. press()

C. tap()

D. touch()9、python 的爬虫框架包括(D )

A. scrapy

B. PySpider

C. Portia

D. 以上所有

10、python 与处理图片相关的工具或库不包括( A)

A. lxml

B. PIL

C. Pillow

D. OpenCV

二、判断题(每题 2 分)

1、解析 HTML 只能使用 BeautifulSoup 库(错 )

2、只能使用 Matplotlib 库来绘制图表( 错)

3、使用 urllib.request.urlopen()方法请求网页时,可以直接添加请求头信息( 错)

4、使用用户代理池可以有效地防止被目标网站识别为爬虫(对 )

5、使用 Api 前,需要在提供 Api 服务的网站上申请一个接口服务( 对 )

6、网络爬虫可以用任何编程语言实现,如 PHP、Java、Python 等( 对 )

7、用 urllib.request 库进行浏览器伪装时,需要修改 Referer 字段( 错)

8、Ajax 是一种异步的 JavaScript 和 XML 技术,它可以在不刷新整个页面的情况

下,与服务器进行数据交换(对 )

9、lxml 库可以解析 HTML 代码,并提取出所有标签、属性和文本内容( 错 )

10、正则表达式中, $表示匹配输入的开始,^表示匹配输入的结束,如果设置

了多行标志,则它们也可以匹配换行符前后的位置( 错)

三、填空题(每题 2 分)

1、发送 HTTP 请求可以使用requests模块。

2、Pandas是 Python 中用于处理表格数据的标准库,它支持多种格式的数据导入导出,如 CSV、Excel、JSON 等。

3、使用Wireshark库进行抓包分析,可以查看浏览器与服务器之间的通信过程和数据。

4、使用Scapy库进行抓包分析,可以查看浏览器与服务器之间的通信过程和数据。

5、Cookies是指服务器为了一定目的而储存在用户本地的数据。

6、避开网站反爬虫机制可以用使用 代理 IP 设置用户代理 使用浏览器自动化工具

7、实 现 浏览 器 伪 装 、代 理 设 置 、 Cookie 处 理 等 可 以 使用request s库。

8、在 XPath 语法中,用来表示当前节点的轴名称是self

9、网络爬虫需要遵守目标网站的 robots.txt 协议,以免造成不必要的麻烦

10、单元测试除了可以用 unittest 模块,还可以使用 pytest 模块。

四、简答题(每题 4 分)

1、请简要说明什么是序列化和反序列化?

  • 序列化(Serialization) 是将对象的状态转换为一种可以存储或传输的格式的过程。常见的序列化格式包括 JSON、XML 格式等。序列化后的数据可以保存到文件中,或者通过网络传输到其他系统。
  • 反序列化(Deserialization) 是将序列化后的数据重新转换回对象的过程。通过反序列化,可以恢复之前保存的对象状态,便于继续使用或处理。

2、如何在 Python 中使用 requests 库发送 HTTP 请求?

Post

3、简述 Scrapy 框架的优势(至少两条)

  • 高效的抓取能力
  • 灵活的请求处理
  • 内置的 HTML 解析工具
  • 强大的数据处理和存储

4、请简要说明 python 相比 MATLAB 在科学计算和数据分析方面的优势(至少两

条)。

  • 开源和免费
  • 丰富的第三方库
  • 跨平台兼容性

5、简述 Xpath 表达式的基本规则(至少两条)。

  • 选择节点:XPath 使用路径表达式来选择节点。路径表达式可以是绝对路径(从根节点开始)或相对路径(从当前节点开始
  • 使用轴(Axes):XPath 提供了多种轴(axes),用于选择相对于当前节点的其他节点。
  • 使用谓语(Predicates):谓语用于过滤节点集,通过在路径表达式中添加条件来选择特定的节点

五、应用题(每题 10 分)

1、 请写一个 Python 程序,用于从给定的多个 csv 文件中读取数据,并将数据合并成一个新的 csv 文件。

import pandas as pd
import os

def merge_csv_files(input_files, output_file):
    # 读取所有CSV文件并存储在DataFrame列表中
    dataframes = []
    for file in input_files:
        # 检查文件是否存在
        if not os.path.isfile(file):
            print(f"文件 {file} 不存在,跳过该文件。")
            continue
        try:
            df = pd.read_csv(file, encoding='gbk')
            dataframes.append(df)
            print(f"成功读取文件 {file}")
        except Exception as e:
            print(f"读取文件 {file} 时出错: {e}")

    # 合并所有DataFrame
    if dataframes:
        merged_df = pd.concat(dataframes, ignore_index=True)
        # 保存合并后的DataFrame到新的CSV文件
        merged_df.to_csv(output_file, index=False)
        print(f"数据已成功合并并保存到 {output_file}")
    else:
        print("没有有效的CSV文件可以合并。")

# 示例文件列表,如果有文件不在当前目录,请提供完整路径
input_files = [
    '1.csv',
    '2.csv',
    '3.csv'
]

# 输出文件名
output_file = 'merged_file.csv'

# 调用函数进行合并
merge_csv_files(input_files, output_file)

2、使用 selenium 模拟页面下拉滚动。

安装Selenium库

pip install selenium

实现代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
import time

def scroll_page(url, scroll_count=10):
    # 设置Chrome选项
    chrome_options = Options()
    chrome_options.add_argument("--headless")  # 无头模式,不打开浏览器窗口
    chrome_options.add_argument("--disable-gpu")
    chrome_options.add_argument("--no-sandbox")

    # 设置ChromeDriver服务
    service = Service('/path/to/chromedriver')  # 请替换为你的ChromeDriver路径

    # 启动浏览器
    driver = webdriver.Chrome(service=service, options=chrome_options)

    try:
        # 打开目标网页
        driver.get(url)
        print(f"已打开网页: {url}")

        # 模拟下拉滚动
        for _ in range(scroll_count):
            driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
            print("页面已下拉滚动一次")
            time.sleep(2)  # 等待页面加载更多内容

        # 打印页面源代码(可选)
        # print(driver.page_source)

    except Exception as e:
        print(f"操作过程中出错: {e}")

    finally:
        # 关闭浏览器
        driver.quit()
        print("浏览器已关闭")

# 示例URL
url = 'https://example.com'

# 调用函数进行页面下拉滚动
scroll_page(url)
呈上拙作,望不吝赐教 --LM
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
隐藏
变装