爬虫爬取1688返回response成功但是内容为空?

今天尝试写了一个爬取1688商品页的爬虫,发现1688的代码已经不同于几年前了,前台的页面html代码居然是通过js请求返回json数据中的值解析而来,整个动态加载的html被全部封装。在网页前台浏览的时候也能明显感觉到,整个商品页不是全部一次加载完成,随着鼠标的下滑进行动态加载,直至翻页出现。找了一下网上的爬取代码,不是代码太旧就是使用selenium,因此我尝试从解析js角度来看看能否爬到数据。
我搜索的关键词为:大理石餐盘,访问的url为:https://s.1688.com/selloffer/offer_search.htm?keywords=%B4%F3%C0%ED%CA%AF%B2%CD%C5%CC&n=y&netType=1%2C11&spm=a260k.635.3262836.d102
通过抓包可以发现实际上每个页面的动态加载通过如下的js文件加载:
图片说明

同时可以看到头部信息为:
图片说明

因此我编写了代码来请求此url,想要获取其中的数据
通过分析url,我发现其实只有几个关键的参数在发生作用,我修改了url如下:
https://s.1688.com/selloffer/rpc_async_render.jsonp?keywords=%B4%F3%C0%ED%CA%AF%B2%CD%C5%CC&beginPage=2&startIndex=40&templateConfigName=marketOfferresult&async=true&enableAsync=true
将比较关键的参数罗列:keywords,beginpage ,startindex(本页中以0.20.40循环),templateconfigname,async,enableasync
从页面请求的结果如下
https://s.1688.com/selloffer/rpc_async_render.jsonp?keywords=%B4%F3%C0%ED%CA%AF%B2%CD%C5%CC&beginPage=2&startIndex=40&templateConfigName=marketOfferresult&async=true&enableAsync=true
图片说明

依据上面的分析我编写了代码:

 '''
    得到单页商品信息
    '''
    try:
        print('正在爬取第%d页' % page)

        for startindex in range(0, 2):
          proxy = get_proxy()
          url = 'https://s.1688.com/selloffer/rpc_async_render.jsonp'
          data = {
            'keywords': KEYWORD,  # 搜索关键词,
            'beginpage': str(page),  # 页数
            'templateConfigName': TemplateConfigName,
            'startIndex':  str(startindex*20),
            'async': 'true',
            'enableAsync': 'true'
               }
          headers = {
            'User_Agent': random.choice(USER_AGENT),
            'Referer':'https://s.1688.com/selloffer/offer_search.htm?keywords=' + quote(
                KEYWORD) + '&n=y&netType=1%2C11&spm=a260k.635.3262836.d102&offset=9&filterP4pIds=580281266813,551252714239,554311584303,554434844511,576452898982,567623615791,1264995609,584747673985',
            'Cookie': COOKIE,
            }
          proxies = {"http": "http://{}".format(proxy)}
          response = requests.get(url=url, headers=headers, params=data, proxies=proxies, timeout=5)
          time.sleep(1)
          if response.status_code == 200:
               print(response.text)
               data = response.json()
               get_info(data=data)
    except Exception as e:
           print(e.args)
           print('出现异常,重新爬取第%d页' % page)
           return get_one_page(page)

其中请求头是参照抓包的请求头进行了伪装,user_agent使用了随机代理池中的代理。
ip应用了代理池中的代理进行切换, 测试代码发现虽然返回成功,但是内容为空:
测试代码的结果如下:
正在爬取第1页_
({
"hasError":false,
"message":"success",
"content":{
 "offerResult":{
"html":""
 },

"beaconP4Pid":"1552531611011186199615",

"tracerId":"1191031861991552531610953000954",

"end":0

}
})

很明显服务器判断出来我是机器人,我检查了一下cookies还有ip以及header都没有问题
使用同样的参数在浏览器页面请求也能访问正常的结果,因此我决定增加更多的参数,也许是因为服务器
端验证会检测某个参数是否存在来判断请求来自机器人还是真正的用户,我将代码修改如下:

def get_one_page(page):
    '''
    得到单页商品信息
    '''
    try:
        print('正在爬取第%d页' % page)

        for startindex in range(0, 2):
          proxy = get_proxy()
          url = 'https://s.1688.com/selloffer/rpc_async_render.jsonp'
          data = {
            'keywords': KEYWORD,  # 搜索关键词,
            'beginpage': str(page),  # 页数
            'templateConfigName': TemplateConfigName,
            'startIndex':  str(startindex*20),
            'async': 'true',
            'enableAsync': 'true',
            'rpcflag': 'new',
            '_pageName_': 'market',
            'offset': str(9),
            'pageSize': str(60),
            'asyncCount': str(20),
            'n': 'y',
            'netType': '1%2C11',
            'uniqfield': 'pic_tag_id',
            'qrwRedirectEnabled': 'false',
            'filterP4pIds': '550656542618%2C554434844511%2C574540124248%2C568185683625%2C567623615791%2C536778930216%2C577066747130%2C555894336804',
            'leftP4PIds': '',
            'pageOffset': str(3)
               }
          headers = {
            'User_Agent': random.choice(USER_AGENT),
            'Referer':'https://s.1688.com/selloffer/offer_search.htm?keywords=' + quote(
                KEYWORD) + '&n=y&netType=1%2C11&spm=a260k.635.3262836.d102&offset=9&filterP4pIds=580281266813,551252714239,554311584303,554434844511,576452898982,567623615791,1264995609,584747673985',
            'Cookie': COOKIE,
            }
          proxies = {"http": "http://{}".format(proxy)}
          response = requests.get(url=url, headers=headers, params=data, proxies=proxies, timeout=5)
          time.sleep(1)
          if response.status_code == 200:
               print(response.text)
               data = response.json()
               get_info(data=data)
    except Exception as e:
           print(e.args)
           print('出现异常,重新爬取第%d页' % page)
           return get_one_page(page)

测试的结果如下:

正在爬取第1页
({
"hasError":false,
"message":"success",
"content":{
 "offerResult":{
"html":"  \n   \n <!-- 为打点计算 offerindex 值-->\n      \n \n <!-- 用于异步请求 -->\n   \n\n   <div id=\"sm-maindata-script\">\n <script type=\"text\/javascript\">\n var coaseParam = {\n   \'isCoaseOut\':true\n   };\n <\/script>\n   <script type=\"text\/javascript\">\n var rightP4P = {\n industryTagPath:\'\',\n leftP4PId:\'\',\n leftP4PLoginId:\'\',\n biaowangId:\'\'\n };\n var rightP4Poffer =[\n   ];\n<\/script>\n   <\/div>\n \n\n"
 },

"beaconP4Pid":"1552532048109186199394",

"tracerId":"1191031861991552532048084000548",

"end":0

}
})

很遗憾结果并不理想,仍旧没有办法获得真正的数据。
我分析了还没有被我列进去的参数,因为无法寻找到其规律所以就没有加上去。
难道1688现在已经做到了,机器人无法爬的地步了吗,到底应该如何解决呢。有没有大神能够指点一下:
另外我同样的测试了一下1688的热销市场,同样的方式,没有问题可以爬取到js的内容,只不过数据是直接封装在json返回值中的,不是通过html代码二次封装。

2个回答

web应用使用动态JS异步加载数据防爬,已成趋势,
靠破解js抓取数据成本太高,可以尝试selenium驱动浏览器方式解决这个问题,
缺点是对硬件资源消耗较大,如果抓取量不大的,可以选择

fangfang852004
fangfang852004 那我就直接用webscraper了
11 个月之前 回复

使用selenium就可以了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
爬虫返回的response内容完整,但是用etree.HTML解析后,内容就变少了,导致不能用xpath定位,是为啥?
1、爬虫返回的response内容完整,但是用etree.HTML解析后,内容就变少了,导致不能用xpath定位,是为啥? ``` import requests from lxml import etree url = "https://tieba.baidu.com/f?fr=wwwt&kw=%E4%B8%8D%E8%89%AF%E4%BA%BA" headers = { "User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36" } response = requests.get(url,headers=headers).content.decode() print(response) html_str = etree.HTML(response) print(etree.tostring(html_str).decode()) # li = html_str.xpath("//ul[@id='thread_list']/li[@class='j_thread_list clearfix']") # print(li) ```
python 爬虫爬取网易云音乐
刚开始学爬虫,想试着爬取网易云音乐,但是发现好不容易在network里找到网易云里面音乐的url之后,试着去requests获取了一次之后就立马403了,请问有什么办法吗?
java爬虫爬取插件数据
请问一下各位大神, java爬虫可以爬取插件数据么? 求各位大神指点一下。 可以的话能把思路告诉我么?
python爬虫爬取腾讯新闻评论
python小白一枚,刚开始学爬虫,遇到一个动态网页爬取问题,请教各位大神。 需要爬取http://view.news.qq.com/original/intouchtoday/n4083.html 这篇新闻的评论内容, ![图片说明](https://img-ask.csdn.net/upload/201711/23/1511415727_305165.jpg) 但是在找到了目标request url: http://coral.qq.com/article/2243032968/comment?commentid=0&reqnum=10&tag=&ca,llback=mainComment&_=1511408574390 ,不知道怎么提取里面的评论内容,且里面的内容类似于\u***这样的乱码
python 爬虫 如何爬取标签内容
![图片说明](https://img-ask.csdn.net/upload/201904/26/1556278899_200380.png) 想爬取 paths标签下的路径 但是路径被设置为了标签 cc = json_str['paths'] 进行爬取爬取到的是整个paths标签下的内容 怎么才能只爬取标签呢
执行爬虫,拿到response,状态码是200,但是打印文本报的是这个结果,请问一下原因
代码: response = requests.post(url=url, headers=headers, data=form_data) content = response.text print("content=" + content) 代码结果: content=<?xml version="1.0" ?> <error redirect="true">&#x7531;&#x4e8e;&#x4e0d;&#x6d3b;&#x52a8;&#x72b6;&#x6001;, &#x60a8;&#x7684;&#x4f1a;&#x8bdd;&#x5df2;&#x8d85;&#x65f6;&#x4e14;&#x4e0d;&#x518d;&#x6d3b;&#x52a8;&#x3002;&#x8bf7;&#x5355;&#x51fb;&#x201c;&#x786e;&#x5b9a;&#x201d;&#x53ef;&#x91cd;&#x65b0;&#x52a0;&#x8f7d;&#x6b64;&#x9875;&#x3002;</error>
java 爬虫爬取网页,,,,
我要使用java爬虫爬取一个网站, 那个网站需要模拟登陆, 用的是第三方的验证码, 而且验证码是点击验证图片后由多张图片组成的。请问一下各位大神这个该怎么破
python实现新浪微博爬虫
详细简单的解决: !新浪微博爬虫的登陆问题(立即上手有效的,拒绝复制粘贴文章) 后面的内容爬取解析我自己来
我们用爬虫爬数据的时候,怎么应对反爬虫,尤其是应对阿里的反爬虫
我们用爬虫爬数据的时候,怎么应对反爬虫,尤其是应对阿里的反爬虫
Python爬虫爬取网页源代码为空,求问原因&解决方案(向)
代码如下: import urllib import urllib2 import re url ='http://www.yingjiesheng.com/guangzhou-moreptjob-2.html' req = urllib2.Request(url) try: html = urllib2.urlopen(req).read() print html except urllib2.HTTPError, e: print 'The server couldn\'t fulfill the request.' print 'Error code: ', e.code except urllib2.URLError, e: print 'We failed to reach a server.' print 'Reason: ', e.reason else: print 'No exception was raised.' 代码结果如下: ![图片说明](https://img-ask.csdn.net/upload/201508/11/1439268527_619604.png) 求:在爬取网页源代码的时候返回空的原因及解决方案(或解决方向)~求大神指点迷津啊! (PS:在处理这个问题的时候,我曾在IDLE上直接敲这段代码运行,有时候可以返回源代码有时候不可以,另外,有时候我把程序运行了几十遍之后,就能返回源代码,这时候我把url的数字2改为3时(即相当下一页),又不可以了,好诡异~~)
爬虫遇到的困难,反 爬 取 为什么会出像这样的问题?
爬虫遇到的困难,反 爬 取 为什么会出像这样的问题?这个有什么问题吗? ``` import requests from bs4 import BeautifulSoup import bs4 def get_url(url , header):#获得网页内容 r = requests.get(url , header = head , timeout = 30) r.raise_for_status() r.encoding = r.apparent_encoding return print(r.text ,r.status_code) if __name__ == '__main__': url = "https://www1.nm.zsks.cn/xxcx/gkcx/lqmaxmin_19.jsp" head = {'Cookie':'BIGipServerweb_pool=2181103882.36895.0000; JSESSIONID=v0VlpLwW0lzXx1R3n44xvMpYD8hWvJgLhZ8ccZwTzZ5N1LJn1L0l!-1640068139', 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400'} first = get_url(url , head) pass ``` ![图片说明](https://img-ask.csdn.net/upload/201912/29/1577612666_852845.png)
Python爬虫爬取豆瓣电影
Python新手,最近学习Python做了一个爬取豆瓣电影的小项目,在爬取导演、主演的时候结果不是理想,请问分别爬取导演、主演的程序怎么写? 下面是网页的程序: <div class="bd"> <p class=""> 导演: 弗兰克·德拉邦特 Frank Darabont&nbsp;&nbsp;&nbsp;主演: 蒂姆·罗宾斯 Tim Robbins /...<br> 1994&nbsp;/&nbsp;美国&nbsp;/&nbsp;犯罪 剧情 </p>
python爬虫如何只爬取标签内容
![图片说明](https://img-ask.csdn.net/upload/201904/28/1556421806_296447.png) 想爬取 paths标签下的路径 但是路径被设置为了标签 cc = json_str['paths'] 进行爬取爬取到的是整个paths标签下的内容 怎么才能只爬取标签呢 好像用beautifulsoup不行 因为html下只有三个标签 其他都被放到字典里了 怎么用解析json进行爬取呢
求助大神,爬虫爬取京东评论数据爬一小部分(大概100条评论)就爬不到评论了,返回空值了
python 爬取评论数据,爬到一百多条评论,就返回空值了,无法继续爬下去了
跪求大神帮忙写一个非常简单的爬虫程序,爬取网页上的表格信息!
跪求大神帮忙写一个非常简单的爬虫程序,爬取网页上的表格信息! 网页网址为:https://mp.weixin.qq.com/s/li7BbNrZy-eOm79D6Eh-mA 网页上的内容特别简单,就是一个一个的表格,表格里面都是固定的房产出租售的信息,希望能用爬虫爬取出来,然后汇总导出到excel表格中。 ![图片说明](https://img-ask.csdn.net/upload/201908/01/1564636661_814719.png) 希望大神有空了能帮忙给写一些代码,非常感谢!
关于python爬虫利用正则表达式爬取不到内容的问题
我在用正则表达式爬取豆瓣电影里面的电影演员信息。 网页演员信息的位置如下: ![图片说明](https://img-ask.csdn.net/upload/201910/18/1571357394_33738.png) 那么要爬取其中的这些演员名不就是下面的代码吗? ```python actors = re.findall(r'<div class="meta abstract_2">(.*?)</div>', resp, re.DOTALL) ``` 其中resp是前面获取到的网页代码 可是print(actors)输出结果为空,请问是哪里不对呀? 有没有大佬就用正则表达式帮忙解答一下?因为我用爬虫只会用正则表达式匹配。
python爬虫:为什么用requests可以爬到数据,用scrapy爬到数据为空?
"http://detail.zol.com.cn/index.php?c=SearchList&keyword=%C8%FD%D0%C7&page=1" 用requests可以爬到数据,scrapy爬的状态码是200,但响应没有数据,什么原因?
爬虫为什么只能爬到一部分内容?
python爬虫爬取猫眼电影Top100,每一页有10个电影,但是爬虫只能爬取第一个,后面都爬不到不止是为什么 代码如下,大神帮忙看看,感激不尽 import requests from requests.exceptions import RequestException import re def get_one_page(url): try: headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'} response=requests.get(url,headers=headers) if response.status_code==200: return response.text return None except RequestException: return None def parse_one_page(html): pattern=re.compile('<dd>.*?board-index-1">(\d+)</i>.*?data-src="(.*?)".*?/>.*?name"><a.*?>(.*?)</a>'+ '.*?star">(.*?)</p>.*?releasetime">(.*?)</p>.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>',re.S) items=re.findall(pattern,html) print(items) def main(): url='http://maoyan.com/board/4?' html=get_one_page(url) parse_one_page(html) if __name__=='__main__': main() 结果显示 C:\Users\Administrator\python37\python.exe C:/Users/Administrator/PycharmProjects/Maoyantop100/spder.py [('1', 'https://p1.meituan.net/movie/20803f59291c47e1e116c11963ce019e68711.jpg@160w_220h_1e_1c', '霸王别姬', '\n 主演:张国荣,张丰毅,巩俐\n ', '上映时间:1993-01-01', '9.', '5')] Process finished with exit code 0
爬虫在爬网页时遇到超时,能让爬虫自动重新登录吗
爬网页时,有时连接超时,有时网页返回的html不全导致爬取失败,这时候怎么写能让爬虫重新登录呢,
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
【图解经典算法题】如何用一行代码解决约瑟夫环问题
约瑟夫环问题算是很经典的题了,估计大家都听说过,然后我就在一次笔试中遇到了,下面我就用 3 种方法来详细讲解一下这道题,最后一种方法学了之后保证让你可以让你装逼。 问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。 1、方...
吐血推荐珍藏的Visual Studio Code插件
作为一名Java工程师,由于工作需要,最近一个月一直在写NodeJS,这种经历可以说是一部辛酸史了。好在有神器Visual Studio Code陪伴,让我的这段经历没有更加困难。眼看这段经历要告一段落了,今天就来给大家分享一下我常用的一些VSC的插件。 VSC的插件安装方法很简单,只需要点击左侧最下方的插件栏选项,然后就可以搜索你想要的插件了。 下面我们进入正题 Material Theme ...
如何防止抄袭PCB电路板
目录 1、抄板是什么 2、抄板是否属于侵权 3、如何防止抄板 1、抄板是什么 抄板也叫克隆或仿制,是对设计出来的PCB板进行反向技术研究;目前全新的定义:从狭义上来说,抄板仅指对电子产品电路板PCB文件的提取还原和利用文件进行电路板克隆的过程;从广义上来说,抄板不仅包括对电路板文件提取、电路板克隆、电路板仿制等技术过程,而且包括对电路板文件进行修改(即改板)、对电子产品外形模具进行三维...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
Python 植物大战僵尸代码实现(2):植物卡片选择和种植
这篇文章要介绍的是: - 上方植物卡片栏的实现。 - 点击植物卡片,鼠标切换为植物图片。 - 鼠标移动时,判断当前在哪个方格中,并显示半透明的植物作为提示。
相关热词 c# 二进制截断字符串 c#实现窗体设计器 c#检测是否为微信 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片
立即提问