雪球网股票用户评论爬虫

一、什么是爬虫?

网络爬虫,其实叫作网络数据采集更容易理解。
就是通过编程向网络服务器请求数据(HTML表单),然后解析HTML,提取出自己想要的数据。
归纳为四大步:

1.根据url获取HTML数据
2.解析HTML,获取目标信息
3.存储数据
4.重复第一步

二、HTML

什么是HTML?
超文本标记语言(英语:HyperTextMarkupLanguage,简称:HTML)是一种用于创建网页的标记语言,里面嵌入了文本、图像等数据,可以被浏览器读取,并渲染成我们看到的网页样子。
所以我们才会从先爬取HTML,再 解析数据,因为数据藏在HTML里
比如这就是一个简单的html程序

<!DOCTYPE html>
<html>
  <head>
    <title>This is a title</title>
  </head>
  <body>
    <p>Hello world!</p>
  </body>
</html>

三、爬虫基本原理

在编写python爬虫程序时,只需要做以下两件事:
①发送GET请求(模拟计算机对服务器发起Request请求),获取HTML
②解析HTML,获取数据
这两件事,python都有相应的库帮你去做,你只需要知道如何去用它们就可以了。

四、爬虫三大库

1.Request库

作用是请求网站获取网页数据

import requests
res = requests.get('http://www.baidu.com')
print(res)   # 返回200则请求网址成功,404或者400则失败
print(res.text)

显示的结果和F 12的一样

有时爬虫需要加入请求头来伪装成浏览器,以便更好地抓取数据。
在F 12里的network里headers中找到User-Agent进行复制
在这里插入图片描述

import requests
headers = {
   
       'User-Agent':' Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko))Chrome/87.0.4280.66 Safari/537.36'
}

res = requests.get('http://www.baidu.com')
print(res)   # 返回200则请求网址成功,404或者400则失败
print(res.text)

Requsets 库不仅有get()方法,还有post()等方法,用来提交表单来爬取需要登陆才能获取数据的网络。
如果遇到抛出异常,修改后爬虫程序还需要再重新运行,效率很低。这时可以使用try来避免异常

try:
    print(res.text)
except ConnectionError    #出现except后面的错误后执行下面聚聚
    print('拒绝连接')
2. BeautifulSoup库

通过BeautifulSoup库可以轻松解析Request库请求的页面,并把网页的源代码解析成Soup文档,以便过滤提取数据

import requests
from bs4 import BeautifulSoup
headers = {
   
       'User-Agent':' Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko))Chrome/87.0.4280.66 Safari/537.36'
}
res = requests.get('http://www.baidu.com')
soup = BeautifulSoup(res.text,'html.parser')   # 对返回的结果进行解析
print (soup.prettify())

其实输出的内容和request的一样,但它按照标准缩进格式的结构输出,为后续数据过滤提取做好准备。

解析Soup文档可以使用find()、find_all()和selector()定位需要的元素。
1.find_all()

soup.find_all( ‘div’,“item” ) ## 查找div标签,class=“item”
soup.find_all( ‘div’,class=“item” )

2.find()
与上者类似,只是find_all()返回的是文档中符合条件的所有tag,是一个集合(class ’ bs4.element.ReaultSet ’ )
而find()是返回一个Tag(class ’ bs4.element.Tag ’ )

五、正则表达式

正则表达式是一个特殊的符号系列,用于检查一个字符串是否与某种模式匹配。

### 编写雪球网数据抓取爬虫 对于编写针对雪球网的数据抓取爬虫,可以采用多种方法和技术栈来实现这一目标。考虑到网站可能具有复杂的前端逻辑以及反爬机制,推荐使用`requests`库配合`BeautifulSoup`进行静态页面解析,或者借助`Selenium`模拟浏览器行为以应对JavaScript渲染的内容。 #### 使用Requests和BeautifulSoup抓取静态内容 当目标网页主要依赖于传统的HTML/CSS/JS构建而非AJAX异步加载时,可以通过简单的HTTP GET请求获取页面源码,并通过DOM树结构定位所需信息: ```python import requests from bs4 import BeautifulSoup url = 'https://xueqiu.com/' # 雪球首页或其他具体板块链接 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" } response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') # 假设要提取文章标题列表作为例子 titles = soup.find_all('h2', class_='title') for title in titles: print(title.string.strip()) ``` 此段代码展示了基本的网络请求与HTML解析流程[^3]。 #### 利用Selenium处理动态加载内容 如果遇到更多交互式的组件或是完全由客户端脚本生成的内容,则需引入更强大的工具——Selenium WebDriver。它允许自动化控制真实浏览器实例执行操作,从而绕过某些类型的防护措施: ```python from selenium import webdriver from selenium.webdriver.common.by import By from time import sleep driver_path = '/path/to/chromedriver' # ChromeDriver路径 options = webdriver.ChromeOptions() options.add_argument('--headless') # 后台运行模式 browser = webdriver.Chrome(executable_path=driver_path, options=options) try: browser.get('https://xueqiu.com/') sleep(5) # 等待页面加载完成 elements = browser.find_elements(By.CSS_SELECTOR, '.status__item .content') for element in elements[:10]: # 获取前十条帖子正文 print(element.text) finally: browser.quit() ``` 这段示例中包含了启动无头Chrome进程访问指定网址,并等待适当时间确保所有资源都已下载完毕后再读取消息流中的部分文本节点[^4]。 请注意,在实际应用过程中还需要考虑诸如登录状态维持、异常情况处理等因素;同时务必遵循各站点的服务条款,尊重其robots.txt文件指示,合理设置请求频率以免给服务器带来过大负担。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值