根据提供的文件信息,我们可以总结出以下几个关键的知识点: ### 一、网络爬虫与数据抓取 #### 1. 使用`requests`库抓取网页数据 在代码中,作者使用了Python中的`requests`库来获取简书网站的HTML源码。`requests`是一个非常常用的Python第三方库,用于发送HTTP请求。 ```python result = requests.get(url=url, headers=headers) ``` 这里通过`get`方法发起GET请求,并传递了URL和自定义的HTTP头部信息。其中,`headers`字典模拟了浏览器的行为,这样服务器更容易接受请求。获取到的数据通过`result.text`进行访问。 #### 2. 使用`lxml`解析HTML文档 为了从HTML中提取所需的信息,代码使用了`lxml`库中的`etree`模块。`lxml`是一个强大的XML/HTML解析器,提供了类似DOM的API和XPath支持。 ```python html = etree.HTML(result.text) li_lst = html.xpath('//ul[@class="note-list"]/li') ``` 这里首先将获取到的网页源码转换为`etree`对象,然后使用XPath表达式来选取页面中所有的`<li>`元素,这些`<li>`元素包含了文章标题、简介等信息。 #### 3. 数据处理 接下来,代码对选取到的每个`<li>`元素进行了处理,提取出每篇文章的关键信息,如标题、内容摘要、作者以及评论数量等。 ```python for li in li_lst: title = li.xpath('./div/a[1]/text()')[-1] content = li.xpath('./div/p[1]/text()')[-1].strip() author = li.xpath('./div[1]/div[1]/a[1]/text()')[-1].strip() replay = li.xpath('./div[1]/div[1]/a[2]/text()')[-1].strip() info.append([title, content, author, replay]) ``` 这些信息被存储在一个列表中,方便后续处理。 ### 二、数据存储 代码还涉及到了如何将抓取到的数据进行存储,以便进一步分析或展示。 #### 1. 使用`pandas`进行数据处理 `pandas`是Python中最常用的数据处理库之一,提供了DataFrame等高效的数据结构。在这里,作者利用`pandas`创建了一个DataFrame,并将之前提取的信息存储进去。 ```python data = pd.DataFrame(info) ``` #### 2. 将数据保存为CSV和Excel文件 ```python data.to_csv('./test.csv', header=False, index=False) data.to_excel('./text.xlsx', header=False, index=False) ``` 通过`to_csv`和`to_excel`方法可以轻松地将DataFrame保存为CSV或Excel格式的文件,这对于数据分析和报表制作来说是非常有用的。 ### 三、使用Selenium实现动态网页的抓取 #### 1. 初始化WebDriver 对于动态加载的网页,传统的`requests`和`lxml`可能无法完全抓取到所有的数据。此时,就需要用到Selenium这样的工具。它可以通过模拟浏览器行为来与JavaScript驱动的网页进行交互。 ```python driver = webdriver.Chrome(executable_path=r'C:\Users\小米帅哥\Desktop\chromedriver_win32\chromedriver.exe') ``` 这里指定了Chrome WebDriver的路径,初始化了一个WebDriver实例。 #### 2. 页面元素定位 Selenium提供了多种方法来定位页面上的元素,比如使用`find_elements_by_xpath`方法。 ```python #infos = driver.find_elements_by_xpath('//ul[@class="note-list"]/li') ``` 虽然这部分代码没有完整执行,但可以看出其目的是定位页面上所有包含文章信息的`<li>`元素。这与前面使用`lxml`的方式类似,但Selenium能够处理动态加载的元素。 #### 总结 通过以上分析,我们可以看到这个脚本主要实现了以下功能: - 使用`requests`发起HTTP请求并获取网页源码。 - 使用`lxml`解析HTML并提取关键信息。 - 使用`pandas`处理数据并将结果保存到文件中。 - 使用Selenium处理动态网页,虽然这部分代码未完全实现,但它展示了如何使用Selenium来与动态加载的网页进行交互。 这些技术点都是网络爬虫开发中的常见操作,对于初学者来说是非常有价值的实践案例。

















"""
Created on Mon Dec 21 12:49:45 2020
@author: Yuka
"""
#######################异步加载####################
import requests
import re
import time
from lxml import etree
url = "https://www.jianshu.com/?seen_snote_ids%5B%5D=77501094&seen_snote_ids%5B%5D=78620448&seen_snote_ids%5B%5D=80324985&seen_snote_ids%5B%5D=81348233&seen_snote_ids%5B%5D=80348158&seen_snote_ids%5B%5D=81359718&seen_snote_ids%5B%5D=76671403&page=2"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36'
}
result = requests.get(url=url,headers=headers)
html = etree.HTML(result.text)
li_lst = html.xpath('//ul[@class="note-list"]/li')
info = [["title","content","author","replay"]]
for li in li_lst:
title = li.xpath('./div/a[1]/text()')[-1]
content = li.xpath('./div/p[1]/text()')[-1].strip()
author = li.xpath('./div[1]/div[1]/a[1]/text()')[-1].strip()
replay = li.xpath('./div[1]/div[1]/a[2]/text()')[-1].strip()
info.append([title,content,author,replay])
print(info)
#######################存储#########################
data = pd.DataFrame(info)
data.to_csv('./test.csv',header=False,index=False)
data.to_excel('./text.xlsx',header=False,index=False)
######################selenium######################
import selenium
from lxml import etree
import time
from selenium import webdriver
import pandas as pd
url = "https://www.jianshu.com/?seen_snote_ids%5B%5D=77501094&seen_snote_ids%5B%5D=78620448&seen_snote_ids%5B%5D=80324985&seen_snote_ids%5B%5D=81348233&seen_snote_ids%5B%5D=80348158&seen_snote_ids%5B%5D=81359718&seen_snote_ids%5B%5D=76671403&page=2"
driver = webdriver.Chrome(executable_path=r'C:\Users\小米帅哥\Desktop\chromedriver_win32\chromedriver.exe')
driver.get(url)
# infos = driver.find_elements_by_xpath('//ul[@class="note-list"]/li')
# for info in infos:
# title = info.find_element_by_xpath('./div[1]/a[1]').text
# content = info.find_element_by_xpath('./div[1]/p[1]').text
# author = info.find_element_by_xpath('./div[1]/div[1]/a[1]').text
# replay = info.find_element_by_xpath('./div[1]/div[1]/a[2]')[1].text
# print(author+"\n"+title+"\n"+content+"\n",replay)
lst=[['title','author','content','repaly']]
author = driver.find_elements_by_xpath('//ul[@class="note-list"]/li/div[1]/div[1]/a[1]')
replay = driver.find_elements_by_xpath('//ul[@class="note-list"]/li/div[1]/div[1]/a[2]')
title = driver.find_elements_by_xpath('//ul[@class="note-list"]/li/div[1]/a[1]')
content = driver.find_elements_by_xpath('//ul[@class="note-list"]/li/div[1]/p[1]')
for i in range(len(replay)):
lst.append([title[i].text,author[i].text,content[i].text,replay[i].text])
data = pd.DataFrame(lst)
data.to_csv('./test.csv',header=False,index=False)
剩余8页未读,继续阅读


- 粉丝: 77
- 资源: 5
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- GitHub新手使用教程(Windows Git从安装到使用).docx
- Matlab Simulink下的双馈风机控制策略比较研究:超速减载变桨调频与下垂控制及虚拟惯性控制的应用分析于三机九节点系统中,Matlab Simulink下的双馈风机全套控制策略解析:超速减载变
- 基于深度强化学习的无人机自主避障与目标追踪:MP-DQN算法Python实现(论文复现含可运行代码及解释共18页)
- Linux下Nginx+Tomcat负载均衡和动静分离配置要点.docx
- Deepseek免费无卡顿五大访问全攻略:多平台实现AI快速响应
- 电脑装机必备软件清单/windows装机必备软件库
- 图书管理系统BOOKMS winform+sqlite
- C++实现单目相机与投影仪标定算法,yml格式输出结果,重投影误差小于0.1像素,单目相机与投影仪标定算法研究:C++实现,yml格式输出,重投影误差低于0.1像素,单目相机+投影仪标定算法,C++语
- 非线性七自由度模型搭建与CarSim联合仿真验证:车速50km/h路面附着力0.8时的模型精度与误差分析,非线性七自由度模型搭建与CarSim联合仿真验证:车速50km/h路面附着力0.8下的模型精度
- 永磁同步电机转速滑模控制与电流矢量双闭环控制Matlab仿真模型:原理说明与文献参考,永磁同步电机转速滑模控制与电流矢量双闭环控制Matlab仿真模型:原理说明与文献参考,永磁同步电机转速滑模控制Ma
- 软件面试题宝典.docx
- 基于MATLAB的菲涅尔公式计算:P波、S波振幅透射与反射系数及其比值分析,自然光透射反射比的算法实现 ,基于MATLAB的菲涅尔公式计算:P波、S波振幅透射反射系数及比值分析,以及自然光透反特性研究
- 基于Next.js和Deepseek API开发的智能闪卡学习工具
- java调用科大讯飞在线语音合成API
- STM32C8T6库函数实现SG90和SH04扫描测距完整代码工程
- C# LitJson 案例


