python数据爬虫——如何爬取二级页面(三)

前面两篇文章讲了单页面如何爬取,那么我们来试试如何爬取二级页面。

在爬取页面的时候,需要有个良好的习惯,提前对爬取的页面和爬取思路进行一个分析。

目的:爬取携程无忧数据分析师的二级页面,获取每个岗位的要求。

页面的构成:二级页面是点击一级页面跳转的。

解决思路:
1、在一级页面中获取二级页面的链接
2、在二级二面中获取想要的数据。

这里我们会用到BeautifulSoup。

思路有了,那我们开始吧!

1、获取二级页面的链接,href路径获取,浏览器点开检查。找到相对应的href位置:

import requests
from bs4 import BeautifulSoup
from lxml import etree
import time
import csv

headers={
  'user-agent':'Mozilla/5.0'
}#模拟浏览器进行爬取

url = 'https://search.51job.com/list/000000%252C00,000000,0000,00,9,99,%25E6%2595%25B0%25E6%258D%25AE%25E5%2588%2586%25E6%259E%2590%25E5%25B8%2588,2,'
#网页内容格式调整
i = 0
for n in range(1,10):
    r = url+str(n)+str('.html')
    html = requests.get(r,headers=headers)
    html.raise_for_status()
    html.encoding = html.apparent_encoding#内容获取的内容进行转码,以防出现乱码的情况。    

    soup = BeautifulSoup(html.text,'html.parser')
    liebiao = soup.find_all('p','t1')#获取第一页href相关的位置
    #print(liebiao)
    for item in liebiao:
        shuju = 
### 如何使用 Python 实现网页二级评论的爬虫 要实现一个能够抓取网页上二级评论的爬虫程序,可以按照以下方式设计逻辑并利用 Scrapy 或其他库完成任务。 #### 使用 Scrapy 的解决方案 Scrapy 是一种强大的爬虫框架,适用于复杂的多页或多层数据采集场景。以下是具体的方法: 1. **解析一级页面获取评论链接** 需要在初始请求的一级页面中找到指向二级评论区域的 URL 列表。这些 URL 可能位于 HTML 中特定标签属性下(如 `href`)。可以通过 XPath 或 CSS Selector 提取出目标链接[^1]。 2. **发起新的请求访问二级页面** 对于每一个提取出来的二级评论链接,发送 HTTP 请求加载对应的二级页面内容。这一步通常由 Scrapy 自动处理,在回调函数中定义进一步的操作逻辑。 3. **解析二级页面中的评论信息** 当进入具体的某个二级评论页面后,继续运用选择器技术定位所需的数据字段,比如用户名、时间戳以及实际评论文字等内容项。 4. **保存结果至文件或者数据库** 将最终收集到的信息存储起来以便后续分析或展示之用。常见的做法有写入 CSV 文件、JSON 格式的文档或者是关系型/非关系型数据库记录等操作[^2]。 下面给出一段基于 Scrapy 的简单代码示例来说明上述过程: ```python import scrapy class SecondaryCommentsSpider(scrapy.Spider): name = 'secondary_comments' start_urls = ['http://example.com/main-page'] # 替换为主页面URL def parse(self, response): # 解析主页面获得所有二级评论链接 secondary_links = response.css('a.secondary-comment-link::attr(href)').getall() for link in secondary_links: yield response.follow(link, self.parse_secondary_page) def parse_secondary_page(self, response): # 在此方法里解析每个二级页面的具体评论详情 comment_user = response.css('.comment-user').get() or '' comment_text = response.css('.comment-text').get() or '' comment_time = response.css('.comment-time').get() or '' yield { 'user': comment_user.strip(), 'text': comment_text.strip(), 'time': comment_time.strip() } ``` 以上脚本展示了如何构建一个基本的 Spider 类型对象,并分别实现了两个主要功能——从主页跳转到各个子页面以及读取那些子页面内的具体内容。 #### 注意事项 - 网络爬虫应当遵循目标站点的服务条款 (Terms of Service),尊重其 robots.txt 文件设定限制条件。 - 如果遇到反爬机制,则可能需要考虑加入随机等待间隔、模拟浏览器行为头设置等方式降低被封禁风险。 - 数据清洗环节非常重要,因为原始HTML结构可能存在不一致情况影响最终输出质量。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值