日志

说到入狱,你首先可能会想到小偷流氓,罪犯歹徒,而在大家的认知中程序员们除了脱发、过劳死以及孤独一生以外,似乎和入狱也沾不上边。但在这里先别着急下判断,因为程序员有其实千百种被抓去蹲大牢的可能性,其罪名涉及窃取商业机密、电信诈骗、侵犯版权、洗钱、协助欺诈以及写出不清真的代码。想要避免蹲大牢,程序员首先要明白,你的老板(前老板)可能就是那个触发危险的扳机。

给大家举一个真实案例

老板搞庞氏骗局,大龄程序员连带背锅

  世纪巨骗伯纳德·麦道夫(Bernard Madoff)于 2008 年被捕,他的骗局导致投资者损失了超过 170 亿美元本金。2009 年该公司的两名程序员资深杰罗姆·奥哈拉(Jerome O’Hara)和乔治·佩雷斯(George Perez)也被 FBI 逮捕了。这两名程序员分别自 1990 年和 1991 年开始为麦道夫工作,他们被指帮助麦道夫开发能创建虚假交易的计算机程序。2014 年关于他们的判决终于下来了,这两个程序员和麦道夫的前秘书、业务经理,会计经理都被判证券欺诈罪,面临两年半监禁,虽然他们二人都声称不清楚麦道夫的诈骗目的,只是出于对麦道夫的信任为其工作,但是陪审团拒绝接纳他们的辩护理由,两人的律师对陪审团的裁决表示失望,称将会上诉。

所以,大家伙在外打工敲代码时还是多多注意点,要是察觉到有什么异常还是尽早提桶跑路吧,代码和人有一个能跑起来就行(手动滑稽),随着大数据时代的来临一个特殊的技术活跃在了人们眼前,那便是网络爬虫,它常常以它优秀的收集数据能力在公司成为了必须了解的知识,而我们的这个爬虫便是常常被人说游走于“灰色地带的技术”,兄弟们在学习爬虫的时候,一定要知道哪些数据可以爬,哪些数据不能爬,管好小手,幸福全家。

代码

今天就给大家分享几个爬虫小案例

小说

import requests
import parsel
import time
# content_url='https://www.shuquge.com/txt/8659/2324752.html' #小说章节链接
# index_url = 'https://www.shuquge.com/txt/8659/index.html'   #小说网页链接,获取章节
headers={'Host': 'www.shuquge.com','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36 Edg/92.0.902.78'
}
#定义一个函数 也就是一个代码块 封装起来不会运行
#保存一章
def download_one_chapter(content_url):response=requests.get(url=content_url,headers=headers)response.encoding='utf-8'#print(response.text)  #html 格式的字符串#请求到了网址链接,接下来要解析数据#css(专门编写html文本的样式)  re(专门从字符串中提取数据)  xpath(xml  html)# :: 属性选择器 可以用来提取数据#::text 提取文字#::attr() 提取属性sel=parsel.Selector(response.text)# 使用parsel解析工具得到一个解析对象title = sel.css('.reader h1::text').getall()  #得到的是列表 所以有很多元素content =sel.css('.showtxt::text').getall()# 保存小说with open(title[0]+'.txt',mode='w',encoding='utf-8')as f:f.write(title[0])for c in content:f.write(c.strip()+'/n') #strip 去除字符串两端的空白内容#获取所有章节的下载地址,然后再调用方法进行下载
#保存一本
def download_one_book(index_url):index_response = requests.get(index_url, headers=headers)index_response.encoding='utf-8'sel=parsel.Selector(index_response.text)#需要的是 a 标签里面的href   ::texta_list=sel.css('.listmain dl dd a')# 解析每一章的下载地址for a in a_list:#print(a.css('::text').get())     #  目录标题 仅供展示   不用使用url=a.css('::attr(href)').get()content_url=index_url[:-10]+urldownload_one_chapter(content_url)#爬取很多本,一个类别
#数据库,分类别,分小说,按本,分章节保存
#下载一个类别的一页
def download_one_cate_page(category_url):category_response = requests.get(url=category_url, headers=headers)category_response.encoding = 'utf-8'sel = parsel.Selector(category_response.text)a_list = sel.css('.up .l li .s2 a')for a in a_list:index_url = a.css('::attr(href)').get()print(index_url)time.sleep(2)#     #异常处理,尝试重试try:download_one_book(index_url)except:pass#下载一个类别
def download_cate(cate_no):cate_page = 1   #所有的类别都是从第一页开始category_url = 'https://www.shuquge.com/category/' + str(cate_no) + '_' + str(cate_page) + '.html'category_response = requests.get(url=category_url, headers=headers)category_response.encoding = 'utf-8'#一个类别的一页#请求到了网址数据,接下来要解析数据#   css(专门编写 html文本的样式) re(专门从字符串中提取数据)  xpath (xml html))sel = parsel.Selector(category_response.text)   #使用parsel解析工具得到一个解析对象page_url=sel.css('.a-btn')[-1].css('::attr(href)').get()end_page=int(page_url.split('_')[-1].split('.')[0])for page in range(1,end_page+1):time.sleep(2)category_url = 'https://www.shuquge.com/category/' + str(cate_no) + '_' + str(cate_page) + '.html'print(category_url)# 下载 一个类别的一页download_one_cate_page(category_url)#爬取一整个网站
cate_no =3
for cate_no in range(1,8):download_one_chapter(download_one_book(download_one_cate_page(download_cate(cate_no))))

视频

import re
from concurrent.futures import ThreadPoolExecutor
import requests#for i in range(1, 500):
def download(i):url='https://v.huya.com/g/all?set_id=31&order=hot&page={}'.format(i)#https://v.huya.com/g/all?set_id=31&order=hot&page=2#https://v.huya.com/g/all?set_id=31&order=hot&page=1headers={'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Mobile Safari/537.36'}resp=requests.get(url,headers=headers)#print(resp.text)re_ids=re.findall('<a href="/play/(.*?)\.html" class="video-wrap statpid"',resp.text)print(re_ids)#print(re_ids)for index in re_ids:i_url='https://liveapi.huya.com/moment/getMomentContent'params={'videoId': index,'_': '1626673254329'}resp_1=requests.get(url=i_url,params=params)#其实JSON数据就是一段字符串而已#pprint.pprint(resp_1.json())video_url=resp_1.json()['data']['moment']['videoInfo']['definitions'][0]['url']video_title=resp_1.json()['data']['moment']['title']print(video_title,video_url)#video=requests.get(url=video_url).content#with open('video'+video_title+'.mp4','wb')as f:#f.write(video)#print('下完一个了,快关')
if __name__ == '__main__':with ThreadPoolExecutor(50) as t:for i in range(1,100):t.submit(download,i)# print('全部打印完毕!!!')

图片

from selenium import webdriver
import time     #内置模块  用来休眠程序
#导入过滤数据模块(解析数据)
from lxml import etree
import requests#第三方模块   强大的网页自动化框架模块
#打开一个谷歌浏览器
wb = webdriver.Edge()#使用这个浏览器去打开页面
wb.get("https://bcy.net/coser/toppost100")
'''
通过函数滑轮到页面底部(左下角)
window.scrollTo(0,docment.body.scrollHeight)
自动化框架里封装了一个方法 , 可以在咱模拟出的浏览器中,执行JS执行
执行四次JS代码,实现页面加载
'''
for i in range(4):# 可以在 consolewb.execute_script("window.scrollTo(0,document.body.scrollHeight);") #execute_script 把js代码转化成python代码# 加上 delay(延迟),给浏览器界面留充分加载时间time.sleep(2)#获取到网页的完整源代码(selenium里封装了一种方法)
html = wb.page_source
# 1.selenium的page_source方法可以直接返回页面源码
# 2.重新赋值后打印出来
print(html)
#关闭网页
wb.close()
#把网页源代码转成html文件
data =etree.HTML(html)
#使用xpath提取数据      @指定属性     /   找到当下元素下的属性
img_urls=data.xpath('//img[@class="rank-cos-img"]/@src')
img_names=data.xpath('//p[@class="rank-avatar-name"]/text()')for img_url,img_name in zip(img_urls,img_names):path = "./cosplay图集/%s.jpg"%img_nameimg_data=requests.get(url=img_url)with open(path,mode='wb')as f:f.write(img_data.content)print('%s  下载完成!'%img_name)

数据资料

import requests
import json
import time
import openpyxl     #用于操作Excel文件的
def get_comments(productId,page):url ='https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=10029450620491&score=0&sortType=5&page=2&pageSize=10&isShadowSku=0&rid=0&fold=1'headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.67'}resp=requests.get(url,headers=headers)resp.encoding='gbk'r=resp.text.replace('fetchJSON_comment98(','')r=r.replace(');','')json_data = json.loads(r)return json_data#获取最大页数
def get_max_page(productId):dic_data=get_comments(productId,0)  # 调用刚才写的函数,向服务器发送请求,获取字典数据return dic_data['maxPage']#提取数据
def get_info(productId):max_page=get_max_page(productId)lis=[]for page in range(1,max_page+1):       #循环次数comments=get_comments(productId,page)com_lst=comments['comments']    #根据 key 获取 value ,根据comments 获取到评论的列表(每页有10条评论)#遍历评论列表,分别获取每条评论中的内容 尺码 颜色for item in com_lst:connect=item['content']     #内容color =item['productColor'] #颜色size = item['productSize']  #鞋码lis.append([connect,color,size])        #将每条评论的信息添加到列表中time.sleep(3)save(lis)
#用于将爬取到的数据存储到Excel中
def save(lis):wk=openpyxl.Workbook()  #创建工作簿对象    xlsx文件被称为工作簿sheet =wk.active        #获取活动表#遍历列表 ,将列表中的数据添加到工作表中,列表中的一条数据,在Excel中是 一行for item in lis:sheet.append(item)#保存到磁盘wk.save('销售数据.xlsx')#测试
if __name__ == "__main__":productId='10029450620491'
#    print(get_max_page(productId))get_info(productId)

刑!太刑了!今天又是一个入狱小技巧相关推荐

  1. 【基于Web攻击】的方式发现并攻击物联网设备,又是一个入狱小技巧

    近二十年来,DNS重绑定(DNS rebinding)攻击一直是讨论的话题.尽管浏览器厂商做出了努力,但仍然无法找到一个能稳定抵御这些攻击的防御系统.据说这类问题八年前就已经被修复了.但是这类攻击通过 ...

  2. Python写阴阳师脚本带GUI又是一个学习小技巧!

    需要用到环境 Python3. pycharm.天天模拟器.阴阳师. 准备库 pip install pyautogui pip install pywin32 12 需要用到的全部库 import ...

  3. Python写阴阳师脚本带GUI又是一个学习小技巧

    Python写阴阳师脚本带GUI 需要用到环境 Python3. pycharm.天天模拟器.阴阳师. 准备库 pip install pyautogui pip install pywin32 需要 ...

  4. 程序员的反击!每天一个离职小技巧

    作者 | 梦想橡皮擦 来源 | 非本科程序员(ID:htmlhttp) 写在前面 俗话说的好,代码写的少,离职少不了. 最近畅游互联网,发现一些离职小技巧,读后,内心被深深的打动了,但是细细的品过之后 ...

  5. Pyinstaller打包python文件太大?教你三个小技巧有效减小文件体积

    简介 有时候需要在未安装Python环境的平台上运行py程序,使用pyinstaller打包很方便,但打包后的可执行文件实在是太大了.原因在于打包时pyinstaller本就已经关联了很多的pytho ...

  6. 3分钟学会python_3分钟学会一个Python小技巧

    Python时间日期转换在开发中是非常高频的一个操作,你经常会遇到需要将字符串转换成 datetime 或者是反过来将 datetime 转换成字符串. datetime 分别提供了两个方法 strp ...

  7. pandas apply lambda_一分钟一个Pandas小技巧(二)

    " 在逛Kaggle的时候发现了一篇不错的Pandas技巧,我将挑选一些有用的并外加一些自己的想法分享给大家.本系列虽基础但带仍有一些奇怪操作,粗略扫一遍,您或将发现一些您需要的技巧.&qu ...

  8. vob转mp4,每天一个实用小技巧

    vob转mp4,vob的英文全称是Video Object,它是DVD视频媒体使用的容器格式,vob格式擅长将数字视频.音频.字幕.菜单等多个元素复用在流格式中.而且vob格式的文件可以被加密保护.经 ...

  9. 每天一个前端小技巧——生成gif动图下载

    每天一个前端小技巧--生成gif动图下载 动态热图的展现,分别展现某个时间段的热图时间变化,例如:最近一周七天内,每天的热图分布变化图:这个动态变化的图生成一个gif图提供下载是否可行? 实现方案: ...

最新文章

  1. 老程序员的经验和价值在哪里
  2. js获取及判断按键的方法
  3. 从搭建脚手架到在npm上发布react组件
  4. VGG-16 prototxt
  5. JAVA记事本的图形用户界面应用程序含过滤
  6. java面向对象的特征二:继承性 —(14)
  7. spring boot缓存_Spring Boot和缓存抽象
  8. kafka清理数据日志
  9. linux vim 添加注释_vim基础教程
  10. php日期分页,php – Laravel分页不适用于日期搜索
  11. 转-流框架中DOMContentLoaded事件的实现
  12. php 放大镜代码,jQuery实现放大镜效果实例代码_jquery
  13. JAVA 身份证号码的验证
  14. 大数据应用的发展趋势
  15. 系统架构设计师 - ESB 企业服务总线
  16. 利用TCGA癌症基因进行差异分析
  17. 方波与sinc函数之间的最全傅里叶变换关系_助记_有图有推导
  18. 5.6版本GTID复制异常处理一例(转)
  19. 温州科技职业学院 计算机网络技术,浙江【温州科技职业学院】_计算机网络技术专业建设方案.doc...
  20. Websocket系列 -- 协议详解

热门文章

  1. 判断两个数运算是否越界
  2. kaggle——泰坦尼克数据集
  3. [maya] 粒子系统之物体消散效果
  4. 和chatGPT聊了聊通信,答复如下:
  5. 基于 Qt5 ( C++ ) 开发的一个小巧精美的本地音乐播放器
  6. Charles 常用基础功能使用方法
  7. 究竟什么时候需要用RTOS?
  8. 深度学习:深度信念网络(DBN)结构和训练过程
  9. 习题3-5 三角形判断 (15 分)-PTA浙大版《C语言程序设计(第4版)》
  10. 利用BibTeX批量导入参考文献