Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将XPath转换为靓汤_Python_Beautifulsoup - Fatal编程技术网

Python 将XPath转换为靓汤

Python 将XPath转换为靓汤,python,beautifulsoup,Python,Beautifulsoup,我有一个有标签的页面 <img alt="1ee7aca0cf5b0132dd7a005056a9545d" src="http://assets.amuniversal.com/1ee7aca0cf5b0132dd7a005056a9545d"> 如何使用BeautifulSoup访问该标记并获取该标记的src?您可以尝试将xpath表达式转换为CSS选择器表达式,然后使用接受CSS选择器表达式参数的BeautifulSoup方法: soup = BeautifulSoup("y

我有一个有标签的页面

<img alt="1ee7aca0cf5b0132dd7a005056a9545d" src="http://assets.amuniversal.com/1ee7aca0cf5b0132dd7a005056a9545d">

如何使用BeautifulSoup访问该标记并获取该标记的src?

您可以尝试将xpath表达式转换为CSS选择器表达式,然后使用接受CSS选择器表达式参数的BeautifulSoup方法:

soup = BeautifulSoup("your html source")
result = soup.select("#content > div:nth-of-type(2) > p > a > img")

既然您已经熟悉xpath,为什么不使用解析器呢?您可以直接使用xpath查找元素,下面是一个函数:

from lxml import html
def find_by_xpath(element_source,xpath_expression):
    root = html.fromstring(element_source)
    return root.xpath(xpath_expression)

这不起作用:/I get-TypeError:“NoneType”对象不可调用此答案中没有任何东西可以触发该异常。但是,如果html源不包含满足选择器的元素,
result
可以是
None
。若要交叉检查,请尝试将
soup
对象保存到文件中,并查看该文件是否包含所需的元素。您不能通过检查浏览器中的元素进行交叉检查,因为它们可能不同。某些元素可能是由javascript生成的(bs不能执行js,而您的浏览器肯定可以)我得到的“html”没有定义。从lxml导入html添加此

from lxml import html
def find_by_xpath(element_source,xpath_expression):
    root = html.fromstring(element_source)
    return root.xpath(xpath_expression)