有关于CSDN页面爬取破解的两个爬虫(编写时间20200104)

2024-03-05 18:58

本文主要是介绍有关于CSDN页面爬取破解的两个爬虫(编写时间20200104),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

由于课程设计需要编写了一系列爬虫,期中包括:
  • 博客园页面+博客园搜索
  • 百度搜索+百度文库
  • 简书搜索+简书页面
  • 爱学术搜索
具体目的就详细说明,反正就搜集一下资料和URL
下为CSDN的两个爬虫(编写时间20200104)
事先声明:CSDN页面爬虫并未完全破解,所以需要隔一段时间取一下cookie(根据其生存周期?)
  • 首先是CSDN页面爬虫

  • 使用前需要获取cookie中的acw_sc__v2加密码(暂时没破解,因为溯源会进入debug黑洞,比较麻烦,待完善)

  • 获取方式如下:
    在这里插入图片描述

  • 打开CSDN博文,Network模式下DOC,先Clear再刷新页面
    在这里插入图片描述

  • 找到第一个纯数字的那个doc,点开,cookie下找到
    在这里插入图片描述

  • 找到acw_sc__v2的value,加到header中的cookie中去,即可用爬虫得到真实页面

  • 下面是代码

import requests
import time
from lxml import etree
import random
import os
import jsonheaders = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36","accept-language":"zh-CN,zh;q=0.9,en;q=0.8",# "cookie":"acw_sc__v2=5e0c4608eda0369b627288eebf26ea9b0d11bcbb""cookie":  "acw_sc__v2=5e0c90c2e2e885ed5748dbfaf6b26a12f0aad2e0"}def getContent(url):try:req = requests.get(url,headers = headers)req.encoding = req.apparent_encoding# print(req.text)html = etree.HTML(req.text)title = html.xpath("//*[@id='mainBox']/main/div[1]/div/div/div[1]/h1/text()")content = []for each in html.xpath("//*[@id='content_views']/*"):con_temp = each.xpath("string(.)")if  con_temp:content.append(str(con_temp))con_temp = each.xpath("img/@src")if con_temp:for eImg in con_temp:content.append("![]({})".format(eImg))return title,contentexcept:return "",""def save(title,content,name):with open("{}.md".format(name),'w',encoding='utf-8') as f:f.write(str(title[0])+'\n\n')for each in content:f.write(each+'\n')if __name__ == '__main__':url = "https://blog.csdn.net/w746805370/article/details/51312248"# 3SAT规约到独立集url = "https://blog.csdn.net/xiazdong/article/details/8258092"# 【NPC】3、3SAT规约到顶点覆盖url = "https://blog.csdn.net/xiazdong/article/details/8258086"# 证明题NP难问题:3SAT-------》独立集name = "3SAT-独立集"url = "https://blog.csdn.net/u010499172/article/details/73920646"# 几个NP-完全问题的证明name = "几个NP-完全问题的证明"url = "https://blog.csdn.net/kufaaa/article/details/54630460"title,content = getContent(url)if title is not "":save(title,content,name)else:print("访问出错,请更换acw码或者确认url试试")# 使用说明:由于CSDN中的加密机制,因此就算是静态页面,没有acw加密的码也拿不到真实数据# 故此使用时需预先获取acw_sc__v2码,它存在一定的时效性,具体获取方法见README
  • 接下来是中规中矩的CSDN搜索爬虫
    在这里插入图片描述
  • 这个就比较简单,没什么特别的反爬措施,直接上就完事了
import requests
import time
from lxml import etree
import random
import os
import json
import utils.Utils as sqheaders = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"
}proxy_list = ['117.90.131.247:8118','171.11.32.77:9999','223.199.31.112:9999','27.191.234.69:9999','223.199.31.5:9999','60.167.135.179:9999'
]def getContent(word, proxy, page, content):print("当前第{}页".format(page))try:url = "https://so.csdn.net/so/search/s.do?p={}&q={}&t=blog&viparticle=&domain=&o=&s=&u=&l=&f=&rbg=0".format(page,word)re = requests.get(url=url, headers=headers, proxies=proxy)html = etree.HTML(re.text)tit_list = html.xpath("//dl[@class='search-list J_search']")# print(len(tit_list))for each in tit_list:temp_url = each.xpath(".//div[@class='limit_width']/a[1]/@href")[0]temp_title = each.xpath(".//div[@class='limit_width']/a[1]")[0].xpath("string(.)").replace("\"","").replace("\n","").replace(")"," ").replace("("," ").replace("\\","")temp_content = each.xpath(".//dd[@class='search-detail']")[0].xpath("string(.)").replace("\"","").replace("\n","").replace(")"," ").replace("("," ").replace("\\","")# print("temp_url={}\ntitle={}\ncontent={}\n\n".format(temp_url, temp_title,temp_content))content.append([temp_url,temp_title, temp_content])if int(html.xpath("//span[@class='page-nav']/a/@page_num")[-1]) > page:time.sleep(random.uniform(0, 2))return getContent(word=word, proxy=proxy, page=page+1, content=content)except:print("访问出错")return contentdef do(word):proxy = {"http": random.choice(proxy_list)}content = getContent(word=word, proxy=proxy, page=1, content=[])# for each in content:#     print("url={}\ntitle={}\ncontent={}\n\n".format(#         each[0], each[1], each[2]))print(len(content))sq.insert_into_inital_data(content, "CSDN")
if __name__ == '__main__':word = "3sat"do(word)
总结
  • CSDN这个吧,感觉是有点难度,不过花点时间应该不是问题,那个cookie给我的感觉就像之前写过的简书一样,需要先访问一次获取,只是我在这样操作的时候陷入debug黑洞,后来,后来就偷了个懒。

这篇关于有关于CSDN页面爬取破解的两个爬虫(编写时间20200104)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/777492

相关文章

go中的时间处理过程

《go中的时间处理过程》:本文主要介绍go中的时间处理过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 获取当前时间2 获取当前时间戳3 获取当前时间的字符串格式4 相互转化4.1 时间戳转时间字符串 (int64 > string)4.2 时间字符串转时间

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

python编写朋克风格的天气查询程序

《python编写朋克风格的天气查询程序》这篇文章主要为大家详细介绍了一个基于Python的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt

MyBatis编写嵌套子查询的动态SQL实践详解

《MyBatis编写嵌套子查询的动态SQL实践详解》在Java生态中,MyBatis作为一款优秀的ORM框架,广泛应用于数据库操作,本文将深入探讨如何在MyBatis中编写嵌套子查询的动态SQL,并结... 目录一、Myhttp://www.chinasem.cnBATis动态SQL的核心优势1. 灵活性与可

Mybatis嵌套子查询动态SQL编写实践

《Mybatis嵌套子查询动态SQL编写实践》:本文主要介绍Mybatis嵌套子查询动态SQL编写方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、实体类1、主类2、子类二、Mapper三、XML四、详解总结前言MyBATis的xml文件编写动态SQL

利用Python实现时间序列动量策略

《利用Python实现时间序列动量策略》时间序列动量策略作为量化交易领域中最为持久且被深入研究的策略类型之一,其核心理念相对简明:对于显示上升趋势的资产建立多头头寸,对于呈现下降趋势的资产建立空头头寸... 目录引言传统策略面临的风险管理挑战波动率调整机制:实现风险标准化策略实施的技术细节波动率调整的战略价

Python日期和时间完全指南与实战

《Python日期和时间完全指南与实战》在软件开发领域,‌日期时间处理‌是贯穿系统设计全生命周期的重要基础能力,本文将深入解析Python日期时间的‌七大核心模块‌,通过‌企业级代码案例‌揭示最佳实践... 目录一、背景与核心价值二、核心模块详解与实战2.1 datetime模块四剑客2.2 时区处理黄金法