标签: lxml

使用python在LXML中进行屏幕抓取 - 提取特定数据

我一直在努力编写过去几个小时的程序,我认为这是一个非常简单的任务:

  1. 程序要求用户输入(让我们说"幸福"类型)
  2. 程序使用以下格式查询网站thinkexist("http://thinkexist.com/search/searchQuotation.asp?search= USERINPUT ")
  3. 程序返回网站的第一个引用.

我尝试过使用带有lxml的Xpath,但没有经验,每一个结构都带有一个空白数组.

报价的实际内容似乎包含在"sqq"类中.

如果我通过Firebug导航网站,单击DOM选项卡,它出现在textNode属性"wholeText"或"textContent"中 - 但我不知道如何以编程方式使用该知识.

有任何想法吗?

python lxml screen-scraping screen web-scraping

0
推荐指数
1
解决办法
1651
查看次数

使用BeautifulSoup或LXML.HTML进行WebScraping

我已经看过一些网络广播,需要帮助才能做到这一点:我一直在使用lxml.html.雅虎最近改变了网络结构.

目标页面;

http://finance.yahoo.com/quote/IBM/options?date=1469750400&straddle=true

在使用检查器的Chrome中:我看到了数据

 //*[@id="main-0-Quote-Proxy"]/section/section/div[2]/section/section/table
Run Code Online (Sandbox Code Playgroud)

那么一些代码

如何将这些数据输出到列表中.我想换成其他股票从"LLY"到"Msft"?
如何在日期之间切换....并获得所有月份.

python yahoo lxml beautifulsoup web-scraping

0
推荐指数
1
解决办法
3118
查看次数

使用lxml.html拆分HTML文档

我有一个包含多个文本章节的HTML文档,其中H1标记是章节分隔符.如何将这样的文档拆分成html片段,其中每个片段以相应"章节"的h1标签开头.我虽然美化HTML然后逐行迭代内容......但这是一种黑客攻击.使用lxml有更好的解决方案吗?

html python lxml

0
推荐指数
1
解决办法
381
查看次数

Python:为什么以下xpath返回空列表?

我试图从中提取一些文本和链接instapaper.com.所以我使用以下代码完成工作:

>>> import lxml.html as lh
>>> doc = lh.parse("http://www.instapaper.com/u/folder/1227370/programming")
>>> text = doc.xpath(".//*[@id='bookmark_list']/*/div[3]/a/text()")
>>> len(text)
0
>>> text
[]
Run Code Online (Sandbox Code Playgroud)

如您所见,它返回一个空列表,这意味着它无法找到与上述xpath匹配的任何文本.

现在,当我xpath expr在firebug/firepath中使用上述内容时,它可以正常工作.

在此输入图像描述

您可以在上面的图像中看到它显示40 matching nodes.

所以,我的问题是为什么上面的xpath表达式不能用于python/lxml.

正如所请求的Instapaper页面源

python xpath lxml

0
推荐指数
1
解决办法
3013
查看次数

如何通过xpath解析lxml中的子元素

page = urlopen(req)
doc = parse(page).getroot()
table = doc.xpath('/html/body/div/div/div/table')
table
<Element table ...>
doc.xpath('/html/body/div/div/div/table/tr')
<Element tr ...>...
table.xpath('/tr')
[]
Run Code Online (Sandbox Code Playgroud)

为什么不table.xpath('/tr')产生相同的元素列表doc.xpath('/html/body/div/div/div/table/tr')呢?

python xpath lxml

0
推荐指数
1
解决办法
1652
查看次数

如何跳过验证 lxml 中的 URI?

我正在使用 lxml 来解析一些 xml 文件。我不创建它们,我只是解析它们。一些文件包含无效的命名空间 uri。例如:

'D:\Path\To\some\local\file.xsl'
Run Code Online (Sandbox Code Playgroud)

当我尝试处理它时出现错误:

lxml.etree.XMLSyntaxError: xmlns:xsi: 'D:\Path\To\some\local\file.xsl' is not a valid URI
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以用某些东西(任何东西,例如“ http://www.googlefsdfsd.com/ ”)替换任何无效的 uri ?我想写一个正则表达式,但希望有一种更简单的方法。

python xml lxml

0
推荐指数
1
解决办法
2041
查看次数

lxml LookupError:未知编码:'uft-8'

这是一个非常奇怪的错误,让我们看一下细节:

ts.py文件:

#-*- coding: utf-8 -*-
import requests
from lxml import html

headers = {
          'Host':'www.baidu.com',
          'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36',
          }

def get_html(url,enable_proxy=None):
    r = requests.get(url,headers=headers)
    parser = html.HTMLParser(encoding='utf-8')
    return html.document_fromstring(r.text, parser=parser)

p = get_html('http://www.baidu.com')

print p.xpath(u'//*[@id="setf"]/text()')[0].encode('utf-8')
Run Code Online (Sandbox Code Playgroud)

如果我只执行ts.py,lxml就可以完美运行.

但是!当我get_html输入另一个文件时出现错误,请参阅以下内容:

ts.py:

#-*- coding: utf-8 -*-
import requests
from util import get_html

p = get_html('http://www.baidu.com')
print p.xpath(u'//*[@id="setf"]/text()')[0].encode('utf-8')
Run Code Online (Sandbox Code Playgroud)

util.py:

#-*- coding: utf-8 -*-
import requests
from lxml import html

headers = {
          'Host':'www.baidu.com',
          'User-Agent':'Mozilla/5.0 …
Run Code Online (Sandbox Code Playgroud)

python lxml utf-8 character-encoding python-2.7

0
推荐指数
1
解决办法
6046
查看次数

python中的字符编码将'u2019'替换为'

我已尝试过多种方法将其编码为最终结果"BACK RUSHIN'",最重要的字符是右撇号'.

我想要一种方法来使用Python中的一些内置函数来获得最终结果,其中正常字符串和unicode字符串之间没有区别.

这是我用来检索字符串的代码: str(unicode(etree.tostring(root.xpath('path')[0],method='text', encoding='utf-8'),errors='ignore')).strip()

结果是:缺少'BACK RUSHIN'撇号的东西'.

另一种方式是: root.xpath('path/text()')

结果是:u'BACK RUSHIN\u2019'在python中.

最后,如果我尝试: u'BACK RUSHIN\u2019'.encode('ascii', 'replace')

结果是: 'BACK RUSHIN?'

请不要替换函数,我想利用pythons编解码库.也没有打印字符串,因为它被保存在变量中.

谢谢

python unicode lxml character-encoding python-2.7

0
推荐指数
1
解决办法
5548
查看次数

LXML表的Pandas read_html等效项

嗨,我有大约10个表,我已经使用lxml进行了分类。

>>>import pandas as pd
>>>import lxml
>>>root = lxml.etree.HTML(htmlcontent)
>>>tables = root.findall('.//*[@id="info-container"]/table')
>>>readabletables = tables[::2]
>>>len(readabletables) = 5
>>>readabletables[0]
<Element table at 0x105241e60>
Run Code Online (Sandbox Code Playgroud)

我希望这5张表像一样被熊猫读取和解释pd.read_html

我将如何去做呢?

python lxml pandas

0
推荐指数
1
解决办法
1219
查看次数

python lxml:不区分大小写的xpath标记名称匹配

我正在使用python + lxml来解析spss文件。

这个主题上似乎有很多话题,但是答案并没有特别帮助我。

我遇到的答案:

- lower-case the entire input before parsing; 
- if you know the complete list of tags in advance
Run Code Online (Sandbox Code Playgroud)

对我而言,这些建议将花费太多时间。

相反,我只想在必要时匹配字符串。

这是我要编辑的代码行:

xpath("//definition//variable[@name='"+tag_name+"']")
Run Code Online (Sandbox Code Playgroud)

如果tag_name是:

tag_name = "Q1top"
tag_name = "q1Top"
tag_name = "q1TOP"
etc
Run Code Online (Sandbox Code Playgroud)

我猜想某种形式的正则表达式会正常吗???

python xpath lxml case case-insensitive

0
推荐指数
1
解决办法
863
查看次数