GVKun编程网logo

XPath Wordpress Scraper插件(web scraper插件)

4

如果您想了解XPathWordpressScraper插件和webscraper插件的知识,那么本篇文章将是您的不二之选。我们将深入剖析XPathWordpressScraper插件的各个方面,并为您

如果您想了解XPath Wordpress Scraper插件web scraper插件的知识,那么本篇文章将是您的不二之选。我们将深入剖析XPath Wordpress Scraper插件的各个方面,并为您解答web scraper插件的疑在这篇文章中,我们将为您介绍XPath Wordpress Scraper插件的相关知识,同时也会详细的解释web scraper插件的运用方法,并给出实际的案例分析,希望能帮助到您!

本文目录一览:

XPath Wordpress Scraper插件(web scraper插件)

XPath Wordpress Scraper插件(web scraper插件)

使用相对的XPath表达式。

//span[@data-indeed-apply-joblocation]/@data-indeed-apply-joblocation

输出:Trail,BC

substring-before(//span[@data-indeed-apply-joblocation]/@data-indeed-apply-joblocation,",")

输出:Trail

substring-after(//span[@data-indeed-apply-joblocation]/@data-indeed-apply-joblocation,")

输出:BC

EDIT :由于不支持子字符串功能,请使用正则表达式清除结果。保留我提供的XPath(将右侧面板中的“部件”设置为“文本内容”)。然后,在“变形”菜单(右侧面板中的“高级模式”)的“查找和替换”下,输入以下正则表达式:

^.+,\W

一无所有。

输出:

OP

Cypress系列(98)- cypress-xpath 插件, xpath() 命令详解

Cypress系列(98)- cypress-xpath 插件, xpath() 命令详解

如果想从头学起Cypress,可以看下面的系列文章哦

https://www.cnblogs.com/poloyy/category/1768839.html

 

前置学习

首先,得对 xpath 语法熟悉哦,可看此链接进行学习

https://www.cnblogs.com/poloyy/p/12626196.html

 

官方地址

https://github.com/cypress-io/cypress-xpath

 

安装方式

npm

npm install -D cypress-xpath

 

Yarn

yarn add cypress-xpath --dev

 

项目导入插件

在 cypress/support/index.js 文件下写下面语句即可

require('cypress-xpath')

 

个人总结

调用 xpath() 命令的两种方式

// 直接 cy.
cy.xpath()

 获取到 element 元素之后再调用
cy.get(ul').xpath()
cy.xpath().xpath()
cy.get(div').first().xpath()

 

xpath() 命令的返回结果

单个 element 元素或多个 element 元素组成的数组

 

入门使用的栗子

it('简单的栗子',function () {
    cy.xpath('//ul/li')
        .should('have.length',6)
});

 

调用 Cypress 命令后再接 xpath 命令

it('调用 Cypress 命令后再接 xpath 命令',1)"> () {
    cy.xpath('//ul')
        .first()
        .xpath('./li')
});

 

调用 xpath 后再接一次 xpath 命令

it('调用 xpath 后再接一次 xpath 命令',1)"> () {
    cy.xpath('//body/ul')
        .xpath('./li')
});

 

根据属性定位元素

it('根据属性定位元素',1)"> () {
    cy.xpath('//*[@id="form-wrapper"]')
    cy.xpath('//*[@class]')
});

 

 选取当前节点的父节点再找元素

it('选取当前节点的父节点',1)"> () {
    cy.xpath('//*[@id="form-wrapper"]/../h2')
});

 

根据索引定位

it('根据索引定位',1)"> () {
    cy.xpath('//body/ul[1]/li[3]')
});

 

条件表达式

it('条件表达式',1)"> () {
    cy.xpath('//*[@name="password" or @id="form-wrapper"]')
}

 

模糊匹配函数

it('模糊匹配函数',1)"> () {
    cy.xpath('//*[starts-with(@class,"e")]')
    cy.xpath('//*[contains(text(),"Show")]')
});

 

定位函数

it('定位函数',1)"> () {
    cy.xpath('//input[position()=1]')
});

 

其他定位方式

it('其他定位方式',1)"> () {
    cy.xpath('//li[position()=2]/preceding-sibling::li')
     等价写法
    cy.xpath('//li[position()=2]/../li[position()<2]')
});

 

MWeb 1.3.7 发布!增加发布到 Wordpress 等支持 MetaWeblog API 的服务,如:Wordpress 博客、新浪博客、cnblogs、oschina。

MWeb 1.3.7 发布!增加发布到 Wordpress 等支持 MetaWeblog API 的服务,如:Wordpress 博客、新浪博客、cnblogs、oschina。

<h2 id="toc_0">MWeb 1.3.7 版的新功能</h2>

<ul> <li>增加发布到 Wordpress 等支持 Metaweblog API 的服务,目前经测试过的有: Wordpress 博客、新浪博客、cnblogs、oschina。</li> <li>增加发布到 Tumblr 和 Scriptogr.am </li> <li>即时预览改进,原来会闪动,现在拿掉了同步滚动功能后不会了。</li> <li>编辑器和三栏切换也有小改进。</li> </ul>

<h2 id="toc_1">下边介绍一下发布到 Wordpress 等支持 Metaweblog API 的功能</h2>

<p>我所知,Mac 下支持这一功能的 Native 的 Markdown 编辑器就只有 MWeb 了。之前用过 Live Writer 的朋友都知道这功能非常好用,因为加图片非常方便!然后是离线写作,不用担心内容丢失,还可以方便地发布到多处地方。我之前用 Live Writer 时还会时不时要切到 HTML 代码下去修正一下格式问题,有点难用,现在用 Markdown 的话,就不会有这情况了。可以说:Markdown 和 Metaweblog API 才是真正的完美结合!</p>

<p>在 MWeb 中点菜单:<code>MWeb</code> - <code>Preferences</code> - <code>Publishing</code> 即可进入发布设置界面,如下:</p>

<p><img src="http://static.oschina.net/uploads/img/201504/17093925_FuAC.jpg" alt=""/></p>

<h3 id="toc_2">增加发布到 Wordpress 的服务</h3>

<p>点 Wordpress.org 这个按钮,如下图,由于 Wordpress 的远程发布网址可以由博客网址得知,所以只需要填入博客网址、帐号、密码即可。密码是存到 Keychain,所以可无需担心。<br/> <img src="http://static.oschina.net/uploads/img/201504/17093927_x1hn.jpg" alt=""/></p>

<h3 id="toc_3">增加发布到 新浪博客、cnblogs、oschina 的服务</h3>

<p>点 Metaweblog API 这个按钮,如下图,必填的只有 帐号、密码、Publish URL。Publish URL 这个一般支持 Metaweblog API 的服务都会提供的。</p>

<p><img src="http://static.oschina.net/uploads/img/201504/17093927_CKSG.jpg" alt=""/></p>

<p>下面说一下新浪博客、cnblogs、oschina 的 Publish URL。</p>

<ul> <li>新浪博客的 Publish URL:<a href="http://upload.move.blog.sina.com.cn/blog_rebuild/blog/xmlrpc.php">http://upload.move.blog.sina.com.cn/blog_rebuild/blog/xmlrpc.php</a></li> <li>cnblogs 的 Publish URL:<a href="http://www.cnblogs.com/Blog%E5%90%8D/services/metaweblog.aspx">http://www.cnblogs.com/Blog名/services/metaweblog.aspx</a>。其中 <strong>Blog 名</strong> 请换为您的博客名。cnblogs 的博客后台设置,拉到最下面,也可以找到这个网址。比如说我的是 <a href="http://rpc.cnblogs.com/metaweblog/OtisBlog">http://rpc.cnblogs.com/metaweblog/OtisBlog</a> 两者网址不同,但是效果一样。</li> <li>oschina 的 Publish URL:<a href="http://my.oschina.net/action/xmlrpc">http://my.oschina.net/action/xmlrpc</a></li> </ul>

<h3 id="toc_4">发布</h3>

<p>如下图红框处,你可以在 MWeb 分享按钮(右上角的第三个按钮)中找到所增加的发布服务。名称会显示 <code>Blog Name</code> 中设定的名称。</p>

<p><img src="http://static.oschina.net/uploads/img/201504/17093920_7QSi.jpg" alt=""/></p>

<p>比如说我要发布到我的 Wordpress 博客,点 <code>oulvhai 的 Wordpress 博客</code>,如下图:<br/> <img src="http://static.oschina.net/uploads/img/201504/17093929_iYWk.jpg" alt=""/></p>

<p>要注意的时,有些博客服务是不支持上边的一些设置的,比如说 <code>Custom URL</code>、<code>Publish Date</code>、<code>Status</code> 等。设定好后,点 <code>Publish</code> 按钮就可以发布了。</p>

<p>要说明的是:Metaweblog API 有自动上传图片的功能,有看到我现在这文章的图片都是在本地的,发布时就会自动把图片上传到所发布的博客服务。所以就不用找图床了。我这文章会发布到以下几个地方:</p>

<ul> <li>我的用 MWeb 静态网站功能生成的个人博客:<a href="http://coderforart.com">http://coderforart.com</a></li> <li>同样用 MWeb 静态网站功能生成的 MWeb 中文官网:<a href="http://zh.mweb.im">http://zh.mweb.im</a></li> <li>我的 Wordpress 测试博客:<a href="http://appbk.sinaapp.com/">http://appbk.sinaapp.com/</a></li> <li>我的新浪博客:<a href="http://blog.sina.com.cn/oulvhai">http://blog.sina.com.cn/oulvhai</a></li> <li>我在 cnblogs 的博客:<a href="http://www.cnblogs.com/OtisBlog">http://www.cnblogs.com/OtisBlog</a></li> <li>我在 oschina 的博客:<a href="http://my.oschina.net/oulvhai">http://my.oschina.net/oulvhai</a></li> </ul>

<h2 id="toc_5">关于 MWeb Lite</h2>

<p>MWeb Lite 的定位是 Markdown 编辑器和一些 MWeb 正式版的功能的体验。对于轻度使用 Markdown 的朋友来说, MWeb Lite 已足够了,MWeb 正式版的功能大部分用不到。MWeb Lite 的 Markdown 编辑器功能是跟 MWeb 正式版一样的。这个功能会随着 MWeb 这个产品的不断打磨而得到更好的体验。目前 MWeb Lite 对于正式版不同的地方有:</p>

<ol> <li>文档库 MWeb Lite 限定为 10 个文档</li> <li>发布服务只能增加 1 个。</li> </ol>

<h2 id="toc_6">其他</h2>

<p>这里说一下用 MWeb 生成的静态博客的好处:可直接打开所生成的 HTML 文档就能预览!这个是不同于 otcpress 等静态博客生成方式的。otcpress 等生成的 HTML 直接打开预览是没办法看到效果的,必须上传或者用 otcpress 来预览。MWeb 的静态博客功能没有 otcpress 这么强大,但是对于简单只想写一下博客的朋友来说,我觉得足够了。当然,下一版也会增强静态博客功能的。</p>

<p>另外发布到 Wordpress.com、bloger、evernote 功能也是会有的,这几个要在 1.4 版发布后才会开始弄。</p>

python 使用 lxml 中的 xpath 和 scrpay 中的 xpath 的区别

python 使用 lxml 中的 xpath 和 scrpay 中的 xpath 的区别

1.scrapy 中的 xpath:直接是 response.xpath 就是可以,例如:

result = response.xpath(''//span[@class="packaging-des"]/text()'').extract() #extract_first() 等同于 extract()[0]

倘若不加 extract () 的话 就只能得到 html 源代码了,而得不到你想要的文本,所以得加上。

 

2.lxml 中的 xpath,首先需要导入个 etree 包才能使用 xpath

from lxml import etree

然后:

html = etree.HTML(wb_data) #wb_data 是你请求获取到的网页源代码,例如使用requests.get(url).text 获取到的源代码
result = html.xpath(''//span[@class="packaging-des"]/text()'')#这样就可以获取跟上面一样的文本了,不需要使用extract()

但是有时候咱们不想单纯的直接获取后面的 text 文本,或许你想获取 html 源代码,那如何办呢?

html.xpath(''//span[@]'') 这样获取吗?一开始我是这样想的,结果得到的是Element对象。
那我们如何把Element对象转变成html代码呢?
主要思想是利用xpath获取到指定区域的Element对象,然后再将Element对象传给etree.tostring(),即可得到指定区域的html代码
示例:
result = html.xpath(''//span[@class="packaging-des"]'')
div_str=etree.tostring(result[0],encoding=''utf-8'')

成功获取到了指定区域的 html 代码。

参考链接:https://www.cnblogs.com/just-do/p/9778941.html

s.getText (By.xpath (

s.getText (By.xpath ("//fieldset/div [1]/label [2]")) xpath 找不到信息

在 selenium 自动化测试 UserManagerIT 中的方法 inputInValidateUser 时:

assertEquals ("用户登录名已存在", s.getText (By.xpath ("//fieldset/div [1]/label [2]")));

assertEquals ("必选字段", s.getText (By.xpath ("//fieldset/div [2]/label [2]")));

assertEquals ("请输入一个长度最少是 3 的字符串", s.getText (By.xpath ("//fieldset/div [3]/label [2]")));

assertEquals ("输入与上面相同的密码", s.getText (By.xpath ("//fieldset/div [4]/label [2]")));

assertEquals ("请输入正确格式的电子邮件", s.getText (By.xpath ("//fieldset/div [5]/label [2]")));

 

中 s.getText (By.xpath ("//fieldset/div [1]/label [2]")) 提示找不到元素,

报如下错误

org.openqa.selenium.NoSuchElementException: Unable to locate a node using //fieldset/div[1]/label[2]

For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html

Build info: version: ''2.20.0'', revision: ''16008'', time: ''2012-02-28 15:00:40''

System info: os.name: ''Windows XP'', os.arch: ''x86'', os.version: ''5.1'', java.version: ''1.7.0_02''

Driver info: driver.version: HtmlUnitDriver

at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElementByXPath(HtmlUnitDriver.java:802)

at org.openqa.selenium.By$ByXPath.findElement(By.java:344)

at org.openqa.selenium.htmlunit.HtmlUnitDriver$5.call(HtmlUnitDriver.java:1244)

at org.openqa.selenium.htmlunit.HtmlUnitDriver$5.call(HtmlUnitDriver.java:1241)

at org.openqa.selenium.htmlunit.HtmlUnitDriver.implicitlyWaitFor(HtmlUnitDriver.java:984)

at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:1241)

at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:396)

at org.springside.modules.test.functional.Selenium2.getText(Selenium2.java:214)

at org.springside.examples.miniweb.functional.account.UserManagerIT.inputInValidateUser(UserManagerIT.java:122)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:601)

at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)

at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)

at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)

at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)

at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)

at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)

at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)

at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)

at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)

at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)

at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)

at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)

at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)

at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)

at org.junit.runners.ParentRunner.run(ParentRunner.java:300)

at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)

at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

 

改成用 By.id ("messageBox") 来查找 “输入有误,请先更正” 消息时找到了这个提示信息,这个和提示信息是 jquery 校验插件生成的有关吗?

错误提示信息生成的html代码

 

 

 

 

附:在 selenium 自动化测试时,需要使用浏览器显示测试的话,可以添加如下参数:

 firefox 对应

System.setProperty ( "webdriver.firefox.bin" , "C:/Program Files/MoFirefox/firefox.exe" );

driver = new FirefoxDriver();

 

chrome 对应:

System.setProperty ( "webdriver.chrome.driver" , "C:/Documents and Settings/Administrator/Local Settings/Application Data/Google/Chrome/Application/chromedriver.exe" );

driver = new ChromeDriver();

其中 chromedriver.exe 的下载地址为:

http://code.google.com/p/chromium/downloads/list

 

 

我们今天的关于XPath Wordpress Scraper插件web scraper插件的分享已经告一段落,感谢您的关注,如果您想了解更多关于Cypress系列(98)- cypress-xpath 插件, xpath() 命令详解、MWeb 1.3.7 发布!增加发布到 Wordpress 等支持 MetaWeblog API 的服务,如:Wordpress 博客、新浪博客、cnblogs、oschina。、python 使用 lxml 中的 xpath 和 scrpay 中的 xpath 的区别、s.getText (By.xpath ("//fieldset/div [1]/label [2]")) xpath 找不到信息的相关信息,请在本站查询。

本文标签: