首页 > 解决方案 > Selenium 使用什么 Python 库来构造元素的“.text”属性?

问题描述

我有一个使用 Selenium-python 的网络抓取代码,并意识到我不需要运行任何 javascript,因此为了提高效率,我将其“翻译”为 urllib.requests 和 BeautifulSoup。在阅读表格时,我试图模仿 selenium 的“.text”属性所做的工作。BeautifulSoup 似乎没有这么简单的读取表格的方法。当尝试在 Selenium 模块中搜索“.text”属性的编码方式时,我想我不知道如何查找此类信息。谁能帮我弄清楚这些信息。在哪里解释了如何从 html 中检索此属性?

Example_url = "http://www4.tjrj.jus.br/consultaProcessoWebV2/consultaMov.do?v=2&numProcesso=2008.001.000272-2&acessoIP=internet&tipoUsuario="

当我尝试使用 Selenium 时:

driver.get(Example_url)

driver.find_element_by_xpath('//*[@id="content"]/form/table/tbody').text

我得到了想要的结果(样本)

2012 年 2 月 7 日\n工程提示:definitivo\nMaço:1706\nMaço recebido pelo arquivo em:09/07/2012\n本地工程:Arquivo Geral - 里约热内卢\n 运动提示:Revogação da Suspensão do Processo ( Art. 89 da Lei 9099)\nData do movimento: 01/07/2012\n Tipo do Movimento: Ato Ordinatório Praticado\nData: 06/02/2012\n描述: Ag. expedição de ofício de baixa。Ofício eletrônico nº 206539271 ao 3º ORD em 14/02/2012., devidamente cumprido em 18/06/2012。Processo para arquivar.\n Tipo do Movimento: Ato Ordinatório Praticado\nData: 17/01/2012\nDescrição: devolvido da digitação\n Tipo do Movimento: Digitação de Documentos\nData da digitação: 17/01/2012\n Tipo do Movimento: Ato Ordinatório Praticado\n数据: 06/01/2012\n描述: Para fazer comunicações de praxe.\n 运动提示: Ato Ordinatório Praticado\n数据: 2012 年 6 月 1 日\n描述:Certifico que a r. 佛罗里达州的句子。111/112,transitou em julgado para as partes em 04/11/2011。”...(继续...)

标签: pythonpython-3.xseleniumbeautifulsoup

解决方案


假设 javascript 不需要运行。我将在您指定的时间进行测试。

我可能会先尝试 pandas 来检索表

import pandas as pd
result = pd.read_html("http://www4.tjrj.jus.br/consultaProcessoWebV2/consultaMov.do?v=2&numProcesso=2008.001.000272-2&acessoIP=internet&tipoUsuario=")
print(result[0].dropna()) # <== or choose appropriate index

否则,CSS 选择器使用请求来定位表。

import requests
from bs4 import BeautifulSoup
url = 'http://www4.tjrj.jus.br/consultaProcessoWebV2/consultaMov.do?v=2&numProcesso=2008.001.000272-2&acessoIP=internet&tipoUsuario='
res  = requests.get(url,headers={'User-Agent': 'Mozilla/5.0'})
soup = BeautifulSoup(res.content, 'lxml')
print(soup.select_one('#content table').text)

推荐阅读