【问题标题】:How to get the <p> tag content?如何获取 <p> 标签内容?
【发布时间】:2021-06-30 06:06:24
【问题描述】:

我想从网页上的所有&lt;p&gt;标签中获取内容,所以我写了这段代码:

from selenium import webdriver

driver = webdriver.Firefox()

href_list = []
href_p_dict = {}

for i in range(1, 11):
    get_link = f"https://rifey.ru/news?page={i}"
    driver.get(get_link)
    e_list = driver.find_elements_by_class_name('block-link')
    for e in e_list:
        href_list.append(e.get_attribute('href'))

for href in href_list:
    driver.get(href)
    content = driver.find_elements_by_tag_name('p')
    href_p_dict.update({href: content})
    print(href, content)

但我的输出是这样的:

https://rifey.ru/news/list/id_102034 [<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="75246d26-78b9-4f3a-bb8e-0d61b466ed95", element="480831d9-04ed-4443-99de-3a7f16ff3c9c")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="75246d26-78b9-4f3a-bb8e-0d61b466ed95", element="c1e11246-d799-4cfd-bdfb-f1e85f3eaeab")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="75246d26-78b9-4f3a-bb8e-0d61b466ed95", element="4cf97837-fa83-466c-a07d-11b9121b314e")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="75246d26-78b9-4f3a-bb8e-0d61b466ed95", element="89807888-63b3-478d-9af8-92d3155d2197")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="75246d26-78b9-4f3a-bb8e-0d61b466ed95", element="0a5b148a-07cb-46eb-bd63-93fa0a2c7339")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="75246d26-78b9-4f3a-bb8e-0d61b466ed95", element="e36ad0f0-7b5d-4781-9a34-b5c4c198fa97")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="75246d26-78b9-4f3a-bb8e-0d61b466ed95", element="080de5d0-dbab-4059-afcd-120b039dc4b8")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="75246d26-78b9-4f3a-bb8e-0d61b466ed95", element="3a1c5678-be15-4205-97e4-7cfcb8267717")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="75246d26-78b9-4f3a-bb8e-0d61b466ed95", element="400ee932-f79f-40a0-acc0-e0e93832cbb5")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="75246d26-78b9-4f3a-bb8e-0d61b466ed95", element="c32ed757-2646-48c0-9542-ae6c26da20ca")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="75246d26-78b9-4f3a-bb8e-0d61b466ed95", element="1602487b-8bab-42ad-84fd-cf9c4a60506e")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="75246d26-78b9-4f3a-bb8e-0d61b466ed95", element="1a745694-5e46-4676-9aed-7623e758697a")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="75246d26-78b9-4f3a-bb8e-0d61b466ed95", element="5f80d5a6-85af-48b4-9dab-b7d8442c826c")>]

我希望得到&lt;p&gt; 中的文本。我试图像这样更改我的代码:

content = driver.find_elements_by_tag_name('p').text

还有这个:

href_p_dict.update({href: content.text})

但我有相同的回溯:

Traceback (most recent call last):
  File "/home/alyferryhalo/Documents/code/work/rifey_parser.py", line 17, in <module>
    content = driver.find_elements_by_tag_name('p').text
AttributeError: 'list' object has no attribute 'text'

我该如何解决?

我用这些:

  • Ubuntu 20.04
  • Python 3.8.5
  • 硒 3.141.0

【问题讨论】:

    标签: python selenium parsing


    【解决方案1】:

    你做不到

    content = driver.find_elements_by_tag_name('p').text
    

    从你使用find_elements的那一刻起,它就会在Python中返回一个列表。

    列表没有text 方法。所以你所面临的错误是准确的。

    AttributeError: 'list' 对象没有属性 'text'

    现在解决这个问题:

    这样做:

    for con in driver.find_elements_by_tag_name('p')
        print(con.text)
    

    【讨论】:

    • 我不确定它是否有用,但我重写了一段代码,因此循环必须如下所示:for con in driver.find_elements_by_tag_name('p'): content.append(con.text) href_p_dict.update({href: content})
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 2019-09-26
    • 2022-01-07
    • 1970-01-01
    • 2011-10-29
    相关资源
    最近更新 更多