当前位置: 首页> 新闻> 焦点 > 【项目实训】对前期面经爬取为空的页面重新爬取

【项目实训】对前期面经爬取为空的页面重新爬取

时间:2025/9/12 23:15:16来源:https://blog.csdn.net/m0_63711281/article/details/139923016 浏览次数:0次

在前期经过团队成员对牛客网面试经验帖子的爬取,已经获得了部分面试经验的相关数据,但是在使用过程中,发现存在大量内容为空的数据记录,为了保证数据的可用性,我对这些页面重新进行了爬取。

  • 牛客中之前爬取的面经存在一些空白页

经查询,发现这些页面与大部分页面源代码布局不一致,比如,下边所要爬取的内容在

标签中的p标签下,(还有的是在div标签的div标签下)

在这里插入图片描述
于是采用以下方式:
在这里插入图片描述

  • 然后又出现页面格式不同的页面:
    在这里插入图片描述
    因此需要继续针对此种类型页面编写相应代码:
content_elements = list_item.find_elements(by=By.XPATH, value='//div[@class="nc-slate-editor-content"]//ol/li')content = ' '.join([element.text for element in content_elements])item['content'] = content
  • 还有这种:
    在这里插入图片描述
 content_elements = list_item.find_elements(by=By.XPATH, value='//div[@class="nc-post-content"]//ul/li')
  • 还有:
    在这里插入图片描述
  • 以及:
    在这里插入图片描述
  • 以及:
    在这里插入图片描述
    以上的所有不同的页面结构,都需要根据相应的标签格式定位标签,因此需要编写不同的xpath来定位标签
    代码如下:
class SpiderSpider(scrapy.Spider):name = "spider"allowed_domains = ["www.nowcoder.com"]start_urls = ["https://www.nowcoder.com/interview/center?entranceType=%E5%AF%BC%E8%88%AA%E6%A0%8F"]base_url = "http://www.nowcoder.com"driver = webdriver.Edge()def parse(self, response):self.driver.get(response.url)time.sleep(3)url_list =['https://www.nowcoder.com/discuss/603209336625590272',]for url in url_list:yield scrapy.Request(url, callback=self.parse_detail,meta={'url':url})def parse_detail(self, response):browser = webdriver.Edge()browser.get(response.url)# 等待页面加载和渲染完成wait = WebDriverWait(browser, 10)  # 设置等待时间,单位为秒wait.until(EC.presence_of_element_located((By.XPATH, '/html/body')))time.sleep(5)item = NiukeItem()list_items = browser.find_elements(by=By.XPATH, value='/html/body')for list_item in list_items:item['url'] = response.meta['url']item['title'] = list_item.find_element(by=By.XPATH,value='//*[@id="jsApp"]/main/div/div/div/section/div[3]/div/div/section[1]/div[1]/h1').text# content_elements= list_item.find_elements(#     by=By.XPATH, value='//div[@class="nc-post-content"]//div | //div[@class="nc-post-content"]//p')content_elements = list_item.find_elements(by=By.XPATH, value='//div[@class="nc-post-content"]//ul/li')# content = list_item.find_element(#     by=By.XPATH, value='//div[@class="nc-post-content"]').text# content_elements = list_item.find_elements(#     by=By.XPATH, value='//div[@class="nc-slate-editor-content"]//ol/li')content = ' '.join([element.text for element in content_elements])item['content'] = content# item['content'] = list_item.find_element(by=By.XPATH,value='//*[@id="jsApp"]/main/div/div/div/section/div[3]/div/div/section[1]/div[2]/pre').textprint(item['title'])print(item['content'])yield itembrowser.quit()

得到最终结果如下:
在这里插入图片描述

关键字:【项目实训】对前期面经爬取为空的页面重新爬取

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: