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)