一、选择题(每题 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)