导航:首页 > 源码编译 > 视觉源码抓取

视觉源码抓取

发布时间:2023-03-27 13:39:00

python爬虫怎么获取动态的网页源码

一个月前实习导师布置任务说通过网络爬虫获取深圳市气象局发布的降雨数据,网页如下:

心想,爬虫不太难的,当年跟zjb爬煎蛋网无(mei)聊(zi)图的时候,多么清高。由于接受任务后的一个月考试加作业一大堆,导师也不催,自己也不急。

但是,导师等我一个月都得让我来写意味着这东西得有多难吧。。。今天打开一看的确是这样。网站是基于Ajax写的,数据动态获取,所以无法通过下载源代码然后解析获得。

从某不良少年写的抓取淘宝mm的例子中收到启发,对于这样的情况,一般可以同构自己搭建浏览器实现。phantomJs,CasperJS都是不错的选择。

导师的要求是获取过去一年内深圳每个区每个站点每小时的降雨量,执行该操作需要通过如上图中的历史查询实现,即通过一个时间来查询,而这个时间存放在一个hidden类型的input标签里,当然可以通过js语句将其改为text类型,然后执行send_keys之类的操作。然而,我失败了。时间可以修改设置,可是结果如下图。

为此,仅抓取实时数据。选取python的selenium,模拟搭建浏览器,模拟人为的点击等操作实现数据生成和获取。selenium的一大优点就是能获取网页渲染后的源代码,即执行操作后的源代码。普通的通过 url解析网页的方式只能获取给定的数据,不能实现与用户之间的交互。selenium通过获取渲染后的网页源码,并通过丰富的查找工具,个人认为最好用的就是find_element_by_xpath("xxx"),通过该方式查找到元素后可执行点击、输入等事件,进而向服务器发出请求,获取所需的数据。

[python]view plain

㈡ 如何利用VBA来抓取给定链接的网页源代码

1、这个问题相对比态明洞较专业。建议再去知乎看看

2、另外咨询下淘宝看看卖VBA程序的人都给出什么方案

3、以下代码转载自网络:

方法1:利用AJAX

Dimhttp
Sethttp=CreateObject("Microsoft.XMLHTTP")
槐裤http.Open"POST","连接地址",False
http.send""
Ifhttp.Status=200Then
selection.text=http.responseText
EndIf、
二是开启IE进程
Subtest()
Setie=CreateObject("InternetExplorer.Application")'设置变量
Withie'设置块
.Navigate("需要打开的网页的网址")'打开网页
.Visible=True'是否显示ie窗口
While.readystate<>4'延迟等待页面加载完毕
DoEvents
Wend
Fori=22To49Step3'取数循环
S=S&""&.Document.all.tags("td")(i).innerTEXT'取帆枯数据到变量,熟悉HTML的DOM可以修改这个实现各种内容
Nexti
EndWith'块结束
S=LTrim(S)'删除左边空格
Application.SendKeys"^{F4}"'发送按键关闭当前浏览器标签
MsgBoxS'显示结果
Setie=Nothing'释放内存
EndSub

㈢ 请问,机器人视觉抓取关键技术有哪些,各有哪些实现方法,有何优缺点

首先,我们要了解,机器人领域的视觉(Machine Vision)跟计算机领域(Computer Vision)的视觉有一些不同:机器视觉的目的是给机器人提供操作物体的信息。所以,机器视觉的研究大概有这几块:

物体识别(Object Recognition):在图像中检测到物体类型等,这跟 CV 的研究有很大一部分交叉;

位姿估计(Pose Estimation):计算出物体在摄像机坐标系下的位置和姿态,对于机器人而言,需要抓取东西,不仅要知道这是什么,也需要知道它具体在哪里;

相机标定(Camera Calibration):因为上面做的只是计算了物体在相机坐标系下的坐标,我们还需要确定相机跟机器人的相对位置和姿态,这样才可以将物体位姿转换到机器人位姿。

当然,我这里主要是在物体抓取领域的机器视觉;SLAM 等其他领域的就先不讲了。

由于视觉是机器人感知的一块很重要内容,所以研究也非常多了,我就我了解的一些,按照由简入繁的顺序介绍吧:

0. 相机标定

这其实属于比较成熟的领域。由于我们所有物体识别都只是计算物体在相机坐标系下的位姿,但是,机器人操作物体需要知道物体在机器人坐标系下的位姿。所以,我们先需要对相机的位姿进行标定。内参标定就不说了,参照张正友的论文,或者各种标定工具箱;外参标定的话,根据相机安装位置,有两种方式:

Eye to Hand:相机与机器人极坐标系固连,不随机械臂运动而运动

Eye in Hand:相机固连在机械臂上,随机械臂运动而运动 两种方式的求解思路都类似,首先是眼在手外(Eye to Hand)

只需在机械臂末端固定一个棋盘格,在相机视野内运动几个姿态。由于相机可以计算出棋盘格相对于相机坐标系的位姿 、机器人运动学正解可以计算出机器人底座到末端抓手之间的位姿变化 、而末端爪手与棋盘格的位姿相对固定不变。这样,我们就可以得到一个坐标系环

而对于眼在手上(Eye in Hand)的情况,也类似,在地上随便放一个棋盘格(与机器人基座固连),然后让机械臂带着相机走几个位姿,然后也可以形成一个 的坐标环

  1. 平面物体检测

这是目前工业流水线上最常见的场景。目前来看,这一领域对视觉的要求是:快速、精确、稳定。所以,一般是采用最简单的边缘提取+边缘匹配/形状匹配的方法;而且,为了提高稳定性、一般会通过主要打光源、采用反差大的背景等手段,减少系统变量。

目前,很多智能相机(如 cognex)都直接内嵌了这些功能;而且,物体一般都是放置在一个平面上,相机只需计算物体的 三自由度位姿即可。另外,这种应用场景一般都是用于处理一种特定工件,相当于只有位姿估计,而没有物体识别。 当然,工业上追求稳定性无可厚非,但是随着生产自动化的要求越来越高,以及服务类机器人的兴起。对更复杂物体的完整位姿 估计也就成了机器视觉的研究热点。

2. 有纹理的物体

机器人视觉领域是最早开始研究有纹理的物体的,如饮料瓶、零食盒等表面带有丰富纹理的都属于这一类。当然,这些物体也还是可以用类似边缘提取+模板匹配的方法。但是,实际机器人操作过程中,环境会更加复杂:光照条件不确定(光照)、物体距离相机距离不确定(尺度)、相机看物体的角度不确定(旋转、仿射)、甚至是被其他物体遮挡(遮挡)。

幸好有一位叫做 Lowe 的大神,提出了一个叫做 SIFT (Scale-invariant feature transform)的超强局部特征点:Lowe, David G. "Distinctive image features from scale-invariant keypoints."International journal of computer vision 60.2 (2004): 91-110.具体原理可以看上面这篇被引用 4万+ 的论文或各种博客,简单地说,这个方法提取的特征点只跟物体表面的某部分纹理有关,与光照变化、尺度变化、仿射变换、整个物体无关。因此,利用 SIFT 特征点,可以直接在相机图像中寻找到与数据库中相同的特征点,这样,就可以确定相机中的物体是什么东西(物体识别)。

对于不会变形的物体,特征点在物体坐标系下的位置是固定的。所以,我们在获取若干点对之后,就可以直接求解出相机中物体与数据库中物体之间的单应性矩阵。如果我们用深度相机(如Kinect)或者双目视觉方法,确定出每个特征点的 3D 位置。那么,直接求解这个 PnP 问题,就可以计算出物体在当前相机坐标系下的位姿。

↑ 这里就放一个实验室之前毕业师兄的成果当然,实际操作过程中还是有很多细节工作才可以让它真正可用的,如:先利用点云分割和欧氏距离去除背景的影响、选用特征比较稳定的物体(有时候 SIFT 也会变化)、利用贝叶斯方法加速匹配等。而且,除了 SIFT 之外,后来又出了一大堆类似的特征点,如 SURF、ORB 等。

3. 无纹理的物体

好了,有问题的物体容易解决,那么生活中或者工业里还有很多物体是没有纹理的:

我们最容易想到的就是:是否有一种特征点,可以描述物体形状,同时具有跟 SIFT 相似的不变性?不幸的是,据我了解,目前没有这种特征点。所以,之前一大类方法还是采用基于模板匹配的办法,但是,对匹配的特征进行了专门选择(不只是边缘等简单特征)。

这里,我介绍一个我们实验室之前使用和重现过的算法 LineMod:Hinterstoisser, Stefan, et al. "Multimodal templates for real-time detection of texture-less objects in heavily cluttered scenes." Computer Vision (ICCV), 2011 IEEE International Conference on. IEEE, 2011.

简单而言,这篇论文同时利用了彩色图像的图像梯度和深度图像的表面法向作为特征,与数据库中的模板进行匹配。由于数据库中的模板是从一个物体的多个视角拍摄后生成的,所以这样匹配得到的物体位姿只能算是初步估计,并不精确。但是,只要有了这个初步估计的物体位姿,我们就可以直接采用 ICP 算法(Iterative closest point)匹配物体模型与 3D 点云,从而得到物体在相机坐标系下的精确位姿。

当然,这个算法在具体实施过程中还是有很多细节的:如何建立模板、颜色梯度的表示等。另外,这种方法无法应对物体被遮挡的情况。(当然,通过降低匹配阈值,可以应对部分遮挡,但是会造成误识别)。针对部分遮挡的情况,我们实验室的张博士去年对 LineMod 进行了改进,但由于论文尚未发表,所以就先不过多涉及了。

4. 深度学习

由于深度学习在计算机视觉领域得到了非常好的效果,我们做机器人的自然也会尝试把 DL 用到机器人的物体识别中。

首先,对于物体识别,这个就可以照搬 DL 的研究成果了,各种 CNN 拿过来用就好了。有没有将深度学习融入机器人领域的尝试?有哪些难点? - 知乎 这个回答中,我提到 2016 年的‘亚马逊抓取大赛’中,很多队伍都采用了 DL 作为物体识别算法。 然而, 在这个比赛中,虽然很多人采用 DL 进行物体识别,但在物体位姿估计方面都还是使用比较简单、或者传统的算法。似乎并未广泛采用 DL。 如@周博磊所说,一般是采用 semantic segmentation network 在彩色图像上进行物体分割,之后,将分割出的部分点云与物体 3D 模型进行 ICP 匹配。

当然,直接用神经网络做位姿估计的工作也是有的,如这篇:Doumanoglou, Andreas, et al. "Recovering 6d object pose and predicting next-best-view in the crowd." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016.

它的方法大概是这样:对于一个物体,取很多小块 RGB-D 数据(只关心一个patch,用局部特征可以应对遮挡);每小块有一个坐标(相对于物体坐标系);然后,首先用一个自编码器对数据进行降维;之后,用将降维后的特征用于训练Hough Forest。

5. 与任务/运动规划结合

这部分也是比较有意思的研究内容,由于机器视觉的目的是给机器人操作物体提供信息,所以,并不限于相机中的物体识别与定位,往往需要跟机器人的其他模块相结合。

我们让机器人从冰箱中拿一瓶‘雪碧’,但是这个 ‘雪碧’ 被‘美年达’挡住了。我们人类的做法是这样的:先把 ‘美年达’ 移开,再去取 ‘雪碧’ 。所以,对于机器人来说,它需要先通过视觉确定雪碧在‘美年达’后面,同时,还需要确定‘美年达’这个东西是可以移开的,而不是冰箱门之类固定不可拿开的物体。 当然,将视觉跟机器人结合后,会引出其他很多好玩的新东西。由于不是我自己的研究方向,所以也就不再班门弄斧了。

机器人家上有关于这个很详细的图文讲解,你可以看下,希望对你有用

㈣ 怎么E语言怎么读取网页数据库的数据 有的网页查看源代码 视觉内容就找不到 网页内容也无法复

这个一般成熟点的并裤网站都是看不到的,因为成熟的网站都是专门有一个文件是做数据绝袭简库接口,其他页面执行时只会调用它来读取数据库禅汪,所以一般只能靠猜测,小型网站一般来说php的用的大多是mysql,asp的大多是mssql.大型的就不好说了!

㈤ 怎么获取网页源代码中的文件

获取网页源代码中的文件的具体步骤如下:

1、首先我们在浏览器里随意打开一张网页查看其源代码。败悄

㈥ python如何抓取网页源代码中的字符串

使用正则匹配,列:

importrequests
importre

req=requests.get(url)
r=re.findall('<scriptsrc="(.*?)"></script>',req.text)#(.*?)非贪婪匹配
print(r)

自己网上找找python正则方面的知识

㈦ python,求一个简单的selenium+re的网页源码爬取

网页爬取不一定要用Selenium,Selenium是为了注入浏览器获取点击行为的调试工具,如果网页无需人工交互就可以抓取,不建议你使用selenium。要使用它,你需要安装一个工具软件,使用Chrome浏览器需要下载chromedriver.exe到system32下,如使用firefox则要下载geckodriver.exe到system32下。下面以chromedriver驱动chrome为例:

#-*-coding:UTF-8-*-
fromseleniumimportwebdriver
frombs4importBeautifulSoup
importre
importtime

if__name__=='__main__':

options=webdriver.ChromeOptions()
options.add_argument('user-agent="Mozilla/5.0(Linux;Android4.0.4;GalaxyNexusBuild/IMM76B)AppleWebKit/535.19(KHTML,likeGecko)Chrome/18.0.1025.133MobileSafari/535.19"')
driver=webdriver.Chrome()
driver.get('url')#你要抓取网络文库的URL,随便找个几十页的替换掉

html=driver.page_source
bf1=BeautifulSoup(html,'lxml')
result=bf1.find_all(class_='rtcspage')
bf2=BeautifulSoup(str(result[0]),'lxml')
title=bf2.div.div.h1.string
pagenum=bf2.find_all(class_='size')
pagenum=BeautifulSoup(str(pagenum),'lxml').span.string
pagepattern=re.compile('页数:(d+)页')
num=int(pagepattern.findall(pagenum)[0])
print('文章标题:%s'%title)
print('文章页数:%d'%num)


whileTrue:
num=num/5.0
html=driver.page_source
bf1=BeautifulSoup(html,'lxml')
result=bf1.find_all(class_='rtcspage')
foreach_resultinresult:
bf2=BeautifulSoup(str(each_result),'lxml')
texts=bf2.find_all('p')
foreach_textintexts:
main_body=BeautifulSoup(str(each_text),'lxml')
foreachinmain_body.find_all(True):
ifeach.name=='span':
print(each.string.replace('xa0',''),end='')
elifeach.name=='br':
print('')
print(' ')
ifnum>1:
page=driver.find_elements_by_xpath("//div[@class='page']")
driver.execute_script('arguments[0].scrollIntoView();',page[-1])#拖动到可见的元素去
nextpage=driver.find_element_by_xpath("//a[@data-fun='next']")
nextpage.click()
time.sleep(3)
else:
break

执行代码,chromedriver自动为你打开chrome浏览器,此时你翻页到最后,点击阅读更多,然后等一段时间后关闭浏览器,代码继续执行。

㈧ M3U8抓取源代码

m3u8后面好像可以不要

㈨ php获取网页源码内容有哪些办法

1、使用file_get_contents获得网页源代码。这个方法最常用,只需要两行代码即可,非常简单方孝春便。

2、使用fopen获得网页源代码。这个方法用的人也不少,不过代码有点多。

3、使用curl获得网页源代码。使用curl获得网页源代码的做法,往往是需要更高要求的人使用,例如当你需要在抓取网页内容的同时,得到网页header信息卖核,还有ENCODING编码的使,USERAGENT的使用等等。

㈩ php抓取网页源码方法

可以使用file_get_content函数来获取源代码,你只需要把网站传入这个函数,获取后是一个字符串,你需要格式化代码就可以了

阅读全文

与视觉源码抓取相关的资料

热点内容
xzforandroid 浏览:575
程序员那么可爱歌曲完整版 浏览:904
为什么购买pdf 浏览:43
操作系统代码编译 浏览:483
程序员东北大学 浏览:426
编译忽略空字符 浏览:117
多店铺阿里云服务器教程 浏览:378
单片机求初值 浏览:420
安卓机如何在电脑备份图片 浏览:925
ca证书加密机价格 浏览:798
天干地支年份算法 浏览:796
程序员打造的视频 浏览:7
java和php通信 浏览:680
为什么黑程序员 浏览:163
程序员男生 浏览:456
戴尔文件夹内文件怎么置顶 浏览:582
云服务器6m网速 浏览:722
vivo手机中国联通服务器地址 浏览:862
工程总控编译失败 浏览:707
燕赵红枫app如何下载 浏览:867