Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.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 从html获取文本时出现AttributeError_Python_Html_Css_Beautifulsoup - Fatal编程技术网

Python 从html获取文本时出现AttributeError

Python 从html获取文本时出现AttributeError,python,html,css,beautifulsoup,Python,Html,Css,Beautifulsoup,我不知道发生了什么,但两天前同样的代码还在工作 我试图做的是获取带有itemprop=“name”的文本,这是提供的项目的标题。在本例中:“Swatch” 我如何总是获取AttributeError:“NoneType”对象没有属性“get\u text” 有人能解释一下为什么我会被判有罪吗?非常感谢 编辑: 我还试图用css路径直接定位它,但这并没有给我任何结果。 作者: 您得到的错误表明页面上没有这样的元素。 昨天可能是这样,但网站的标记可能会改变 您可以确保给定条件的元素确实存在: fro

我不知道发生了什么,但两天前同样的代码还在工作

我试图做的是获取带有itemprop=“name”的文本,这是提供的项目的标题。在本例中:“Swatch”

我如何总是获取
AttributeError:“NoneType”对象没有属性“get\u text”
有人能解释一下为什么我会被判有罪吗?非常感谢

编辑:

我还试图用css路径直接定位它,但这并没有给我任何结果。 作者:


您得到的错误表明页面上没有这样的元素。 昨天可能是这样,但网站的标记可能会改变

您可以确保给定条件的元素确实存在:

from bs4 import BeautifulSoup
from urllib2 import urlopen

response = urlopen('https://www.willhaben.at/iad/kaufen-und-verkaufen/d/swatch-209522646/')
soup = BeautifulSoup(response, "lxml")

if soup.find(itemprop='name'):
    texttitle = soup.find(itemprop='name').text.strip()
    print(texttitle)
else:
    print('no such element') 

返回
None
的原因是该HTML页面中没有名为
itemprop
且其值设置为
name
的属性的元素

查看源代码,肯定有使用
itemprop
属性的元素,例如:

<div itemprop='description' class="description">
    Batterie leer,ansonsten funktionsfähig!
</div>

<div itemprop='offers' itemscope itemtype='http://schema.org/Offer' class="container right">

Batterie leer,ansonsten funktionsfähig!
但是没有像
这样的元素,这就是为什么您要返回
的原因


@Dmitry是正确的,最有可能的原因是网站被更新。

它只是
text()
而不是
get\u text()
主要是因为
soup2.find(itemprop=“name”)
实际上没有返回任何内容。你应该把你打电话的结果打印出来,看看你到底得到了什么,然后深入检查,看看真正的问题在哪里。从那里,你可以决定你应该做些什么来解决问题。text()也会给出同样的错误。@Fahradlaus不可能知道是谁否决了你,所以最好不要假设,也不要试图把人们叫出去。此外,无论在这里使用哪种方法是正确的,您在自己的故障排除中错过了几个步骤。我之前的评论提供了一些背景信息。@idjaw很抱歉,我觉得在没有任何评论的情况下获得否决票是不公平的。尽管如此,我在查找css路径时尝试了一些故障排除,但这并没有让我找到任何地方。非常感谢,但事实上,网站上有这样一个元素。它位于css路径:
html body.frontend.page-object div#page container div#page container div#page-content.clearfix div#box-maincontent.boxblueroundcorners.bap div.wh-anzeige div.adHeadingLine div.adHeading h1.header.cSensesparse
所以我想知道它是否与最近的python更新有关我做了什么我会这样做:查看网站的“查看源代码”,而不是检查。找到该元素,查看其属性,选择那些属性,这将帮助您唯一地标识该元素。把这个条件放到find()中,这就是我要做的。唯一的元素正是我选择的元素,但它始终给我一个AttributeError。在本例中,我只是尝试获取标题“Swatch”。我稍微检查了一下这个页面。这个标题似乎是在页面加载之后出现的,在那里执行了一些javascript。使用
seleium
library是避免头部碰壁的简单选择,它模拟浏览器并在pseudobrouser-webdriver中物理加载页面。感谢您的帮助。但如果我看一下网站,下面提到的
样例中有这样一个元素位于css路径:
html body.frontend.page-object div#page container div#page container inner div#page-content.clearfix div#box-maincontent.boxBlueRoundedCorners.bap div.wh-anzeige div.adHeadingLine div.adHeading h1.header.cXenseParse
抱歉,但我在HTML源代码中没有看到该元素。也许你正在看一个不同的网页。Web服务器很可能根据用户(地理位置等)呈现不同的内容。我建议您共享一个指向您看到的HTML源代码(jsfiddle.net)的链接。从未使用过,但它是这样工作的吗?这不是有效的html。将其另存为.html文件并在浏览器中打开,您会发现它无法正确呈现。获取源代码(Win/Chrome中的ctrl+u)并将原始内容保存到文件中。
from bs4 import BeautifulSoup
from urllib2 import urlopen

response = urlopen('https://www.willhaben.at/iad/kaufen-und-verkaufen/d/swatch-209522646/')
soup = BeautifulSoup(response, "lxml")

if soup.find(itemprop='name'):
    texttitle = soup.find(itemprop='name').text.strip()
    print(texttitle)
else:
    print('no such element') 
<div itemprop='description' class="description">
    Batterie leer,ansonsten funktionsfähig!
</div>

<div itemprop='offers' itemscope itemtype='http://schema.org/Offer' class="container right">