python爬取网站时抓不到网站源代码? 5C

爬取这个网站时:http://www.mafengwo.cn/poi/18972.html,抓取不到网站源代码,网页查看时有,但是python get不到,soup、xpath都查不到,请问是什么问题,怎么爬取呢?
图片说明

1个回答

我这里看了下,用到了gzip压缩,你有正确解压缩么,文本的编码是否正确。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
练习Python时发现一个网站,完全查看不到网页的源代码
网站地址:https://www.afa.org/publications-news/news/ 今天别人给我一个网站,问我这个网站要如何爬取,我拿过来看之后, 我发现完全找不到源代码啊,查看源码内容对不上,查看json,还是对不上,试着翻个页,没有添加json,完全不知道该如何爬取这种网站。 有没有大神们能指点一下,这种网站要如何进行爬取。
同一个页面,选择查看网页源代码时看不到这部分内容,但是单机这部分内容选择检查时可以看到源码,爬虫获取内容时如何获取这部分内容?
以http://quote.eastmoney.com/center/gridlist.html#hs_a_board为例 查看网页源码时没有下图红色框的内容,使用python爬虫时也爬取不到: ![图片说明](https://img-ask.csdn.net/upload/201909/25/1569373669_779779.png) 但是指向红色框的内容,选择检查时,可以看到这部分的源码: ![图片说明](https://img-ask.csdn.net/upload/201909/25/1569373913_89968.png) 那么做爬虫时如何爬取这部分内容?
为何用Python做爬虫时抓取下来的页面跟源代码不一样?
代码如下: # -*- coding:utf-8 -*- import urllib import urllib2 import re baseURL = 'http://zhidao.baidu.com/question/491268910.html' headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36'} #request = urllib2.Request(baseURL) request = urllib2.Request(url=baseURL,headers=headers) response = urllib2.urlopen(request) print response.read().decode("GBK") 我用上面的代码爬取一个百度知道的答案,把抓取到的信息打印出来为什么有的地方跟网页审查元素所显示的代码不一样? 网页原来的段落为:![图片说明](https://img-ask.csdn.net/upload/201604/05/1459841312_538797.png) 这段话对应的源代码为:![图片说明](https://img-ask.csdn.net/upload/201604/05/1459841401_109843.png) 抓取网页信息后的对应的代码为:![图片说明](https://img-ask.csdn.net/upload/201604/05/1459841477_324454.png) 我尝试了一个,在提取页面时,加载一个headers头部,但是结果还是不行,求各路大神指点,直接把解决办法附在评论区里,谢谢各路大神了。。。
网页源代码中没有网页信息如何爬取。
在帮老师爬取好专家网页时, 第一发现应该使用了和携程类似的ajax网页技术吧,小白不太了解,点击下一页时,url不改变。 第二网页源代码中没有网页信息如何爬取,网页中的专家姓名等信息在网页源代码中压根找不到 附上网址http://hzj.tech110.net/expert/expsearch.jspx?expcode=1&flag=2# 谢谢啦
python爬这个网站,需要的信息不在源代码中,怎么做
http://www.changtu.com/chepiao/nanjingshi-zhenjiangshi.html?day=4 想抓汽车车次的信息,在审查元素中能找到,但在源码中找不到,新手不太会抓这种网页,求论坛的大神指点一下: 1、看了其他的帖子什么的说是要找到相应的包,得到真正包含这些信息的地址,但是我不会找,可否告知这个地址是什么,怎么找到的。 2、比如说这个南京到镇江的班次,有两页,那么翻页要怎么翻?是访问链接上加上一个参数吗,怎么确定有几页以及怎么得到参数名称的。 谢谢~
小白请教高手,python爬取数据遇到js隐藏div怎么办
请教一下,我最近想在政府房管部门网站爬取房产备案信息,地址:http://www.dyyscx.com/newhouse/house_table.aspx?id=828279 每个楼盘表下有个“查看”链接,点击后就会在原页面生成新的备案内容。 这一部分内容使用元素检查是可以看见的,但查看源代码却看不见。 使用network查看XHR发现有个文件“GetBuildTableByAjax.ashx”,这里面的preview中就有相关信息。 截取片段是这样的: ``` 物业类别:住宅 销售状态:抵预 建筑面积:117.260平米 总价:71.65万元' class='border-333333'>3单元&nbsp;3-25-1</td><td width='95' height='30' style='cursor:hand;cursor:point;' bgcolor='#FDDFAB' Title='物业类别:住宅 销售状态:抵预 建筑面积:89.730平米 总价:53.89万元' class='border-333333'>3单元&nbsp;3-25-2</td><td width='95' height='30' style='cursor:hand;cursor:point;' bgcolor='#FDDFAB' Title='物业类别:住宅 销售状态:抵预 建筑面积:120.870平米 总价:70.87万元' class='border-333333'>3单元 ``` 我看了下,原网页head里面有一段Scirpt,内容是这样的: ``` <script type="text/javascript"> function GetData(item, bulid) { var heightobj = document.body.scrollHeight; var widthobj = document.body.scrollWidth; $("div.overdiv").css("width", widthobj).css("height", heightobj).css("left", "0").css("top", "0").show(); //获得显示的位置 var height = document.body.scrollTop + document.documentElement.scrollTop; widthobj = (document.body.clientWidth - 199) / 2; heightobj = (document.documentElement.clientHeight - 60) / 2 + height; //显示该div $("div.select").css("left", widthobj).css("top", heightobj).show(); $.post("GetBuildTableByAjax.ashx", { itemRecord: item, houseCode: bulid }, function (data) { document.getElementById("BuildTable").innerHTML = data; $("div.select").hide(); $("div.overdiv").hide(); }); } </script>' ``` 因为是小白,所以猜想是js隐藏了新内容的标签,导致不在原网页的源代码中显示,所以爬不到内容。 请教一下我猜想的是否正确,以及我要怎么才能获得备案信息的内容。 ps:最好是能贴个完整的方法,谢谢!!!!!!!!!
python爬虫手动输入验证码应该用到什么库和技术?
各位技术大牛,小弟初学python遇到验证码的问题。当页面翻页到下一页时需要进行验证码识别验证才能打开页面。本人想实现自动翻页到下一页时等待手工输入验证码提交,然后再自动爬取数据或者设置某个按键(如空格键)利用按键启动单页的爬虫程序。初步学习了selenium库没有找到自动与手动相互切换的方法,请各位大神提供一些经验或者技术贴给小弟一些提示。 我的目标网页是http://www.bjcourt.gov.cn/cpws/index.htm?st=1&q=&sxnflx=0&prompt=&dsrName=&ajmc=&ajlb=&jbfyId=&zscq=&ay=&ah=&cwslbmc=&startCprq=&endCprq=&page=11 只有翻页到11页开始每次翻页需要验证码输入。 初次提问,表达不清楚的地方请大家原谅。还需要我提供什么信息或者想进一步交流可以私信我或者直接留言。 先提前谢谢各位能够在百忙之中抽出时间阅读我的问题,如果有老哥愿意帮帮忙,更是感激不尽。 补充:还有一个问题,在另一个目标爬取过程中,手动切换到下一页并没有验证码的验证过程,但爬取时收到的源代码显示网页本身是被JS处理过的需要验证码验证。这种问题可以使用selenium解决吗。 网页url:http://www.bjcourt.gov.cn/zxxx/indexOld.htm?st=1&zxxxlx=100013001&bzxrlx=&bzxrxm=&zrr=&frhqtzz=&jbfyId=&ah=&dqxh=6&page=21
爬虫好难啊,求网页源代码分析,助考研一臂之力
我最近考研需要这个网站的视频,想用python爬下来。 这个网站的请求视频的地址好像是用代码生成的,而且需要手动点击才能抓到,抓包一个一个来好慢啊!! 后来发现这个网站的flash播放器的预览图地址和视频请求地址很相似,可是虽然这个预览图是默认加载的,可不过也只能在chrome的抓包里看到这个单独页面请求地址 最关键的问题还是这里的地址没有规律,地址有两个参数(图里面显示出来的那一段),有一个死活找不出来,求大神帮忙分析一下源代码,找出来这个地址的生成方法 如果有人能够有别的爬取的方法也可以的啊 网页地址:http://mooc.chaoxing.com/nodedetailcontroller/visitnodedetail?knowledgeId=757531![图片](https://img-ask.csdn.net/upload/201708/08/1502190679_257869.jpg)
Cython里void对应的python类型是什么?
比如有一个c函数 ` int test(void){ ... } ` 如果不传参数到test里,Cython会报错 `Call with wrong number of arguments (expected 1, got 0)` 前提是我没有源代码,但是又想调用这个函数该怎么办?
python 的 email 里 self.get() 函数的问题
python里的email.py中那个self.get()到底是怎么运作的。 因为用self.get('subject')来抓主题,然后发现有的邮件抓不到主题。 但是邮件用记事本打开又看得到‘Subject:’,用outlook打开也看得到。 然后就看python源代码,发现get()函数是和一个header的二元组的列表进行遍历比较。 但是更多就看不懂了。 求解一下这个get()的运作方式,它匹配的那个header列表到底是什么? 本来想打出来看看,结果是个私有函数,也看不到。 另外用get抓不到,但是用文件读取之后用startswith(),或者find(‘Subject:’)==0. 是可以抓到的。
python小白求问为什么运行此段代码后桌面没有生成爬虫内容的txt
vscode运行正常,没有错误提示。 但是代码中的 f = open('C:/Users/Administrator/Desktop/qs.txt', 'a+') 似乎没有执行,请问哪里出错了。 附代码 由于复制代码到csdn显示不正常,只能用别人的提问了 [源代码](https://segmentfault.com/q/1010000018729574 "") ``` import requests import re headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6818.400 QQBrowser/10.3.3024.400' } info_lists = [] def judgment_sex(class_name): if class_name == 'womenIcon' : return '女' else: return '男' def get_info(url): res = requests.get(url) ids = re.findall('<h2>(.*?)</h2>',res.text,re.S) sexs = re.findall('<div class="articleGender(.*?)>"',res.text,re.S) duanzi = re.findall('<div class="content"><span>(.*?)</span></div>',res.text,re.S) for id,sex,duanzi in zip(ids,sexs,duanzi): info = { 'id':id, 'sex':judgment_sex(sex), 'duanzi':duanzi, } info_lists.append(info) if __name__ == '__main__': urls = ['https://www.qiushibaike.com/text/page/{}/'.format(str(i)) for i in range(1,4)] for url in urls: get_info(url) for info_list in info_lists: f = open('C:/Users/Administrator/Desktop/qs.txt', 'a+') try: f.write(info_list['id']+'\n') f.write(info_list['sex']+'\n') f.write(info_list['duanzi']+'\n') f.close except UnicodeEncodeError: print('错误') ```
python 关于对象实例化的问题
``` class Node(object): # self 当我们实例化一个对象的情况下,再去调用这个函数的时候,这个实例就是self def __init__(self, data, next = None): self.data = data self.next = next class Stack(object): #用到的模块更多 def __init__(self, top = None): # none 就是一个对象 self.top = top def push(self,data): #创建新的节点放到栈顶 self.top = Node(data, self.top) def pop(self): #拿出栈顶元素,原来的栈发生改变 if self.top is None: return None data = self.top.data self.top = self.top.next return data def peek(self): #查看栈顶元素,原来的栈不变 return self.top.data if self.top is not None else None def isEmpty(self): return self.peek() is None if __name__ == "__main__": #别的模块调用这个模块下程序的入口 stack = Stack() stack1 = stack.push(1) stack1 = stack.push(2) print stack.peek(), #查看栈顶元素 stack.pop() print stack.peek() #输出: 2 1 ``` 这个是python stack()的源代码,这里面出现了top,data,但是并没有声明对象的类型? Python中不声明对象类型,是可以用任何类型吗还是什么意思?
<Head First Python>第十章
本书第1-9章的内容已经使用python3.6全部搞通了,但是第十章使用GAE(google app engine) 怎么也找不到软件,好不容易找到了源代码,但是无论使用python2.5 2.7 3.6都无法正常运行, 不是库少了就是库不对,或者是语法错误,我该怎么办啊大家都在发大家都在发大家都在发
Pixiv.net上通过XPath Helper可以准确获取到想要的,在Python里却无法获取到
![图片说明](https://img-ask.csdn.net/upload/201804/06/1523002838_927142.png) 网址为https://www.pixiv.net/search.php?s_mode=s_tag&word=%E3%83%8A%E3%83%AB%E3%83%88%20OR%20(%20Naruto%20)&order=popular_d 我发现F12查看到的和右键查看到的源代码不一样,Python里返回的是右键查看到的。我该怎么做才能提取到我想要的“/member_illust.php?mode=medium&illust_id=47221440”? # 获取返回页面数值 page_html = requests.get(html, headers=headers) # 将html的div 转化为 xml xmlcontent = etree.HTML(page_html.text) # 解析HTML文档为HTML DOM模型 # 返回所有匹配成功的列表集合 link_list = xmlcontent.xpath('//div[@class="layout-body"]//div[@class="_25taFA4"]//a[@class="gtm-recommend-illust gtm-thumbnail-link _1wlaFo6"]/@href') # 直接提取第一个href for link in link_list: print(link)
请问一下哪里有机器学习中相关算法的实现源代码
同时还不属于商业软件级的,因为那种那里会涉及比较复杂的问题,只是想关注算法的实现。比如scikit封装的比较好了,不知道能不能学习到算法实现的过程,不仅仅是应用算法的过程,谢谢
为何打印对象时出现两种不同结果?
首先感谢各位大佬的帮忙,本人新手,在尝试做例题的时候,答案提到应该把bed,chest,table用三行my_house.add_items() 分别导入,我在尝试能否直接导入一个列表时,意识到了问题。如果用for遍历,出来的是我想要的, 如:要添加 ['席梦思']:占地4.00 可是如果直接my_house.add_items(item_list), 出现的却是内存地址。 ``` 要添加 (<__main__.HouseItem object at 0x0000018A9E566588>, <__main__.HouseItem object at 0x0000018A9E841DD8>, <__main__.HouseItem object at 0x0000018A9E856860>) ``` 难以理解为什么,大概是某些python的基础我还没有打牢,现在完全想不到什么原因,还请各位大佬提点一二。 源代码如下 ``` class HouseItem: def __init__(self,name,area): self.name = name self.area = area def __str__(self): return '{}:占地{:.2f} \t'.format([self.name],self.area) class House: def __init__(self,house_type,house_area): self.house_type = house_type self.house_area = house_area # 剩余面积 self.rest_area = house_area # 家具名称列表 self.item_list = [] def __str__(self): return '户型:{}\n总面积: {:.2f}\n家具类型:{}'.format(self.house_type, self.house_area,self.item_list) def add_items(self,item): print('要添加 {}'.format(item)) # 创建家具 bed = HouseItem('席梦思',4) chest = HouseItem('衣柜',2) table = HouseItem('餐桌',1.5) item_test1 = bed,chest,table item_list = bed,chest,table item_test2 = [bed,chest,table] my_house = House('两室一厅',120) my_house.add_items(item_list) for n in item_list: my_house.add_items(n) ```
scrapy框架模拟登陆(好像是重定向问题,小白不太懂)
需要登陆的网站是这样的,它在输入用户名和密码之后,提交的表单中,会把用户名和密码和一个随机值混合然后用DNS加密,表单还需要提交在源代码中隐藏的两个随机值,这些我都有办法获取到,问题是,我获取这一个表单之后使用scrapy.FormRequest()提交,但是进入了一个新的网页,表单需要的随机值发生了改变,导致表单错误,无法登陆,请问各位怎么解决? 非常感谢能进来看看的各位,谢谢(我小白一个...)
用tensorflow做机器翻译时训练代码有问题
``` # -*- coding:UTF-8 -*- import tensorflow as tf src_path = 'D:/Python37/untitled1/train.tags.en-zh.en.deletehtml' trg_path = 'D:/Python37/untitled1/train.tags.en-zh.zh.deletehtml' SRC_TRAIN_DATA = 'D:/Python37/untitled1/train.tags.en-zh.en.deletehtml.segment' # 源语言输入文件 TRG_TRAIN_DATA = 'D:/Python37/untitled1/train.tags.en-zh.zh.deletehtml.segment' # 目标语言输入文件 CHECKPOINT_PATH = './model/seq2seq_ckpt' # checkpoint保存路径 HIDDEN_SIZE = 1024 # LSTM的隐藏层规模 NUM_LAYERS = 2 # 深层循环神经网络中LSTM结构的层数 SRC_VOCAB_SIZE = 10000 # 源语言词汇表大小 TRG_VOCAB_SIZE = 4000 # 目标语言词汇表大小 BATCH_SIZE = 100 # 训练数据batch的大小 NUM_EPOCH = 5 # 使用训练数据的轮数 KEEP_PROB = 0.8 # 节点不被dropout的概率 MAX_GRAD_NORM = 5 # 用于控制梯度膨胀的梯度大小上限 SHARE_EMB_AND_SOFTMAX = True # 在softmax层和词向量层之间共享参数 MAX_LEN = 50 # 限定句子的最大单词数量 SOS_ID = 1 # 目标语言词汇表中<sos>的ID """ function: 数据batching,产生最后输入数据格式 Parameters: file_path-数据路径 Returns: dataset- 每个句子-对应的长度组成的TextLineDataset类的数据集对应的张量 """ def MakeDataset(file_path): dataset = tf.data.TextLineDataset(file_path) # map(function, sequence[, sequence, ...]) -> list # 通过定义可以看到,这个函数的第一个参数是一个函数,剩下的参数是一个或多个序列,返回值是一个集合。 # function可以理解为是一个一对一或多对一函数,map的作用是以参数序列中的每一个元素调用function函数,返回包含每次function函数返回值的list。 # lambda argument_list: expression # 其中lambda是Python预留的关键字,argument_list和expression由用户自定义 # argument_list参数列表, expression 为函数表达式 # 根据空格将单词编号切分开并放入一个一维向量 dataset = dataset.map(lambda string: tf.string_split([string]).values) # 将字符串形式的单词编号转化为整数 dataset = dataset.map(lambda string: tf.string_to_number(string, tf.int32)) # 统计每个句子的单词数量,并与句子内容一起放入Dataset dataset = dataset.map(lambda x: (x, tf.size(x))) return dataset """ function: 从源语言文件src_path和目标语言文件trg_path中分别读取数据,并进行填充和batching操作 Parameters: src_path-源语言,即被翻译的语言,英语. trg_path-目标语言,翻译之后的语言,汉语. batch_size-batch的大小 Returns: dataset- 每个句子-对应的长度 组成的TextLineDataset类的数据集 """ def MakeSrcTrgDataset(src_path, trg_path, batch_size): # 首先分别读取源语言数据和目标语言数据 src_data = MakeDataset(src_path) trg_data = MakeDataset(trg_path) # 通过zip操作将两个Dataset合并为一个Dataset,现在每个Dataset中每一项数据ds由4个张量组成 # ds[0][0]是源句子 # ds[0][1]是源句子长度 # ds[1][0]是目标句子 # ds[1][1]是目标句子长度 #https://blog.csdn.net/qq_32458499/article/details/78856530这篇博客看一下可以细致了解一下Dataset这个库,以及.map和.zip的用法 dataset = tf.data.Dataset.zip((src_data, trg_data)) # 删除内容为空(只包含<eos>)的句子和长度过长的句子 def FilterLength(src_tuple, trg_tuple): ((src_input, src_len), (trg_label, trg_len)) = (src_tuple, trg_tuple) # tf.logical_and 相当于集合中的and做法,后面两个都为true最终结果才会为true,否则为false # tf.greater Returns the truth value of (x > y),所以以下所说的是句子长度必须得大于一也就是不能为空的句子 # tf.less_equal Returns the truth value of (x <= y),所以所说的是长度要小于最长长度 src_len_ok = tf.logical_and(tf.greater(src_len, 1), tf.less_equal(src_len, MAX_LEN)) trg_len_ok = tf.logical_and(tf.greater(trg_len, 1), tf.less_equal(trg_len, MAX_LEN)) return tf.logical_and(src_len_ok, trg_len_ok) #两个都满足才返回true # filter接收一个函数Func并将该函数作用于dataset的每个元素,根据返回值True或False保留或丢弃该元素,True保留该元素,False丢弃该元素 # 最后得到的就是去掉空句子和过长的句子的数据集 dataset = dataset.filter(FilterLength) # 解码器需要两种格式的目标句子: # 1.解码器的输入(trg_input), 形式如同'<sos> X Y Z' # 2.解码器的目标输出(trg_label), 形式如同'X Y Z <eos>' # 上面从文件中读到的目标句子是'X Y Z <eos>'的形式,我们需要从中生成'<sos> X Y Z'形式并加入到Dataset # 编码器只有输入,没有输出,而解码器有输入也有输出,输入为<sos>+(除去最后一位eos的label列表) # 例如train.en最后都为2,id为2就是eos def MakeTrgInput(src_tuple, trg_tuple): ((src_input, src_len), (trg_label, trg_len)) = (src_tuple, trg_tuple) # tf.concat用法 https://blog.csdn.net/qq_33431368/article/details/79429295 trg_input = tf.concat([[SOS_ID], trg_label[:-1]], axis=0) return ((src_input, src_len), (trg_input, trg_label, trg_len)) dataset = dataset.map(MakeTrgInput) # 随机打乱训练数据 dataset = dataset.shuffle(10000) # 规定填充后的输出的数据维度 padded_shapes = ( (tf.TensorShape([None]), # 源句子是长度未知的向量 tf.TensorShape([])), # 源句子长度是单个数字 (tf.TensorShape([None]), # 目标句子(解码器输入)是长度未知的向量 tf.TensorShape([None]), # 目标句子(解码器目标输出)是长度未知的向量 tf.TensorShape([])) # 目标句子长度(输出)是单个数字 ) # 调用padded_batch方法进行padding 和 batching操作 batched_dataset = dataset.padded_batch(batch_size, padded_shapes) return batched_dataset """ function: seq2seq模型 Parameters: Returns: """ class NMTModel(object): """ function: 模型初始化 Parameters: Returns: """ def __init__(self): # 定义编码器和解码器所使用的LSTM结构 self.enc_cell = tf.nn.rnn_cell.MultiRNNCell( [tf.nn.rnn_cell.LSTMCell(HIDDEN_SIZE) for _ in range(NUM_LAYERS)]) self.dec_cell = tf.nn.rnn_cell.MultiRNNCell( [tf.nn.rnn_cell.LSTMCell(HIDDEN_SIZE) for _ in range(NUM_LAYERS)]) # 为源语言和目标语言分别定义词向量 self.src_embedding = tf.get_variable('src_emb', [SRC_VOCAB_SIZE, HIDDEN_SIZE]) self.trg_embedding = tf.get_variable('trg_emb', [TRG_VOCAB_SIZE, HIDDEN_SIZE]) # 定义softmax层的变量 if SHARE_EMB_AND_SOFTMAX: self.softmax_weight = tf.transpose(self.trg_embedding) else: self.softmax_weight = tf.get_variable('weight', [HIDDEN_SIZE, TRG_VOCAB_SIZE]) self.softmax_bias = tf.get_variable('softmax_loss', [TRG_VOCAB_SIZE]) """ function: 在forward函数中定义模型的前向计算图 Parameters:   MakeSrcTrgDataset函数产生的五种张量如下(全部为张量) src_input: 编码器输入(源数据) src_size : 输入大小 trg_input:解码器输入(目标数据) trg_label:解码器输出(目标数据) trg_size: 输出大小 Returns: """ def forward(self, src_input, src_size, trg_input, trg_label, trg_size): batch_size = tf.shape(src_input)[0] # 将输入和输出单词转为词向量(rnn中输入数据都要转换成词向量) # 相当于input中的每个id对应的embedding中的向量转换 src_emb = tf.nn.embedding_lookup(self.src_embedding, src_input) trg_emb = tf.nn.embedding_lookup(self.trg_embedding, trg_input) # 在词向量上进行dropout src_emb = tf.nn.dropout(src_emb, KEEP_PROB) trg_emb = tf.nn.dropout(trg_emb, KEEP_PROB) # 使用dynamic_rnn构造编码器 # 编码器读取源句子每个位置的词向量,输出最后一步的隐藏状态enc_state # 因为编码器是一个双层LSTM,因此enc_state是一个包含两个LSTMStateTuple类的tuple, # 每个LSTMStateTuple对应编码器中一层的状态 # enc_outputs是顶层LSTM在每一步的输出,它的维度是[batch_size, max_time, HIDDEN_SIZE] # seq2seq模型中不需要用到enc_outputs,而attention模型会用到它 with tf.variable_scope('encoder'): enc_outputs, enc_state = tf.nn.dynamic_rnn(self.enc_cell, src_emb, src_size, dtype=tf.float32) # 使用dynamic_rnn构造解码器 # 解码器读取目标句子每个位置的词向量,输出的dec_outputs为每一步顶层LSTM的输出 # dec_outputs的维度是[batch_size, max_time, HIDDEN_SIZE] # initial_state=enc_state表示用编码器的输出来初始化第一步的隐藏状态 # 编码器最后编码结束最后的状态为解码器初始化的状态 with tf.variable_scope('decoder'): dec_outputs, _ = tf.nn.dynamic_rnn(self.dec_cell, trg_emb, trg_size, initial_state=enc_state) # 计算解码器每一步的log perplexity # 输出重新转换成shape为[,HIDDEN_SIZE] output = tf.reshape(dec_outputs, [-1, HIDDEN_SIZE]) # 计算解码器每一步的softmax概率值 logits = tf.matmul(output, self.softmax_weight) + self.softmax_bias # 交叉熵损失函数,算loss loss = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=tf.reshape(trg_label, [-1]), logits=logits) # 在计算平均损失时,需要将填充位置的权重设置为0,以避免无效位置的预测干扰模型的训练 label_weights = tf.sequence_mask(trg_size, maxlen=tf.shape(trg_label)[1], dtype=tf.float32) label_weights = tf.reshape(label_weights, [-1]) cost = tf.reduce_sum(loss * label_weights) cost_per_token = cost / tf.reduce_sum(label_weights) # 定义反向传播操作 trainable_variables = tf.trainable_variables() # 控制梯度大小,定义优化方法和训练步骤 # 算出每个需要更新的值的梯度,并对其进行控制 grads = tf.gradients(cost / tf.to_float(batch_size), trainable_variables) grads, _ = tf.clip_by_global_norm(grads, MAX_GRAD_NORM) # 利用梯度下降优化算法进行优化.学习率为1.0 optimizer = tf.train.GradientDescentOptimizer(learning_rate=1.0) # 相当于minimize的第二步,正常来讲所得到的list[grads,vars]由compute_gradients得到,返回的是执行对应变量的更新梯度操作的op train_op = optimizer.apply_gradients(zip(grads, trainable_variables)) return cost_per_token, train_op """ function: 使用给定的模型model上训练一个epoch,并返回全局步数,每训练200步便保存一个checkpoint Parameters: session : 会议 cost_op : 计算loss的操作op train_op: 训练的操作op saver:  保存model的类 step:   训练步数 Returns: """ def run_epoch(session, cost_op, train_op, saver, step): # 训练一个epoch # 重复训练步骤直至遍历完Dataset中所有数据 while True: try: # 运行train_op并计算cost_op的结果也就是损失值,训练数据在main()函数中以Dataset方式提供 cost, _ = session.run([cost_op, train_op]) # 步数为10的倍数进行打印 if step % 10 == 0: print('After %d steps, per token cost is %.3f' % (step, cost)) # 每200步保存一个checkpoint if step % 200 == 0: saver.save(session, CHECKPOINT_PATH, global_step=step) step += 1 except tf.errors.OutOfRangeError: break return step """ function: 主函数 Parameters: Returns: """ def main(): # 定义初始化函数 initializer = tf.random_uniform_initializer(-0.05, 0.05) # 定义训练用的循环神经网络模型 with tf.variable_scope('nmt_model', reuse=None, initializer=initializer): train_model = NMTModel() # 定义输入数据 data = MakeSrcTrgDataset(SRC_TRAIN_DATA, TRG_TRAIN_DATA, BATCH_SIZE) iterator = data.make_initializable_iterator() (src, src_size), (trg_input, trg_label, trg_size) = iterator.get_next() # 定义前向计算图,输入数据以张量形式提供给forward函数 cost_op, train_op = train_model.forward(src, src_size, trg_input, trg_label, trg_size) # 训练模型 # 保存模型 saver = tf.train.Saver() step = 0 with tf.Session() as sess: # 初始化全部变量 tf.global_variables_initializer().run() # 进行NUM_EPOCH轮数 for i in range(NUM_EPOCH): print('In iteration: %d' % (i + 1)) sess.run(iterator.initializer) step = run_epoch(sess, cost_op, train_op, saver, step) if __name__ == '__main__': main() ``` 问题如下,不知道怎么解决,谢谢! Traceback (most recent call last): File "D:\Anaconda\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 1334, in _do_call return fn(*args) File "D:\Anaconda\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 1319, in _run_fn options, feed_dict, fetch_list, target_list, run_metadata) File "D:\Anaconda\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 1407, in _call_tf_sessionrun run_metadata) tensorflow.python.framework.errors_impl.InvalidArgumentError: StringToNumberOp could not correctly convert string: This [[{{node StringToNumber}}]] [[{{node IteratorGetNext}}]] During handling of the above exception, another exception occurred: Traceback (most recent call last): File "D:/Python37/untitled1/train_model.py", line 277, in <module> main() File "D:/Python37/untitled1/train_model.py", line 273, in main step = run_epoch(sess, cost_op, train_op, saver, step) File "D:/Python37/untitled1/train_model.py", line 231, in run_epoch cost, _ = session.run([cost_op, train_op]) File "D:\Anaconda\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 929, in run run_metadata_ptr) File "D:\Anaconda\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 1152, in _run feed_dict_tensor, options, run_metadata) File "D:\Anaconda\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 1328, in _do_run run_metadata) File "D:\Anaconda\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 1348, in _do_call raise type(e)(node_def, op, message) tensorflow.python.framework.errors_impl.InvalidArgumentError: StringToNumberOp could not correctly convert string: This [[{{node StringToNumber}}]] [[node IteratorGetNext (defined at D:/Python37/untitled1/train_model.py:259) ]]
Python中有没有类似于JAVA的API那样的完整的查询文档
大家好: <br />&nbsp;&nbsp;&nbsp; 小弟目前在自学Python,以前有2年的JAVA开发经验。但是在自学的过程中,对于Python已提供哪些模块以及如何查看它们(包括源代码)很困惑。有达人来指点下吗? <br />&nbsp;&nbsp;&nbsp; 顺便问下,Python怎么没有像JAVA那样的完整详细的API? <br/><strong>问题补充</strong><br/><div class="quote_title">zwws 写道</div><div class="quote_div">Python标准库的源码就在&lt;python&gt;/Lib下。 <br />Windows下的安装包自带一个CHM手册,位置&lt;python&gt;/Doc,非常齐全。</div> <br /> <br /> <br />恩 源码的位置我找到了,谢谢了。 <br />但是你说的DOC,我看了下,不是我想要的 <br /> <br />你看JAVA的API&nbsp; 一个类有哪些方法,哪些属性,位于哪个包下,都列的清清楚楚,很有结构性 <br />而Python的就不一样了 比如我想找pickle模块的功能,怎么用,就找不到。还有假定我不知道该用哪个模块的时候,更加无从找起。。(JAVA起码按照包分门别类了) <br /> <br />按说我《Python核心编程》都看完了呀,怎么感觉想自己找个东西这么难。。 <br /> <br /><br/><strong>问题补充</strong><br/><div class="quote_title">魔力猫咪 写道</div><div class="quote_div">你在Windows里面安装完成后,有个Module Docs的连接。启动这个,然后选择open brower,就会出现一个本地服务器为你提供模块文档。 <br />如果和JavaDoc完全一样就是JavaDoc了,这是Python,结构当然会有所不同,不过内容还是比较详细的。</div> <br /> <br /> <br /> <br />谢谢你,大哥 <br />这个就是我想要的。非常感谢!<img src="/images/smiles/icon_wink.gif"/>
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
JDK12 Collectors.teeing 你真的需要了解一下
前言 在 Java 12 里面有个非常好用但在官方 JEP 没有公布的功能,因为它只是 Collector 中的一个小改动,它的作用是 merge 两个 collector 的结果,这句话显得很抽象,老规矩,我们先来看个图(这真是一个不和谐的图????): 管道改造经常会用这个小东西,通常我们叫它「三通」,它的主要作用就是将 downstream1 和 downstre...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
【图解经典算法题】如何用一行代码解决约瑟夫环问题
约瑟夫环问题算是很经典的题了,估计大家都听说过,然后我就在一次笔试中遇到了,下面我就用 3 种方法来详细讲解一下这道题,最后一种方法学了之后保证让你可以让你装逼。 问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。 1、方...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
GitHub标星近1万:只需5秒音源,这个网络就能实时“克隆”你的声音
作者 | Google团队 译者 | 凯隐 编辑 | Jane 出品 | AI科技大本营(ID:rgznai100) 本文中,Google 团队提出了一种文本语音合成(text to speech)神经系统,能通过少量样本学习到多个不同说话者(speaker)的语音特征,并合成他们的讲话音频。此外,对于训练时网络没有接触过的说话者,也能在不重新训练的情况下,仅通过未知...
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下...
【管理系统课程设计】美少女手把手教你后台管理
【文章后台管理系统】URL设计与建模分析+项目源码+运行界面 栏目管理、文章列表、用户管理、角色管理、权限管理模块(文章最后附有源码) 1. 这是一个什么系统? 1.1 学习后台管理系统的原因 随着时代的变迁,现如今各大云服务平台横空出世,市面上有许多如学生信息系统、图书阅读系统、停车场管理系统等的管理系统,而本人家里就有人在用烟草销售系统,直接在网上完成挑选、购买与提交收货点,方便又快捷。 试想,若没有烟草销售系统,本人家人想要购买烟草,还要独自前往药...
4G EPS 第四代移动通信系统
目录 文章目录目录4G 与 LTE/EPCLTE/EPC 的架构E-UTRANE-UTRAN 协议栈eNodeBEPCMMES-GWP-GWHSSLTE/EPC 协议栈概览 4G 与 LTE/EPC 4G,即第四代移动通信系统,提供了 3G 不能满足的无线网络宽带化,主要提供数据(上网)业务。而 LTE(Long Term Evolution,长期演进技术)是电信领域用于手机及数据终端的高速无线通...
相关热词 c# clr dll c# 如何orm c# 固定大小的字符数组 c#框架设计 c# 删除数据库 c# 中文文字 图片转 c# 成员属性 接口 c#如何将程序封装 16进制负数转换 c# c#练手项目
立即提问