Python 如何从隔离<;的文本节点提取文本;br>;表中的标签?

Python 如何从隔离<;的文本节点提取文本;br>;表中的标签?,python,selenium,selenium-webdriver,css-selectors,Python,Selenium,Selenium Webdriver,Css Selectors,我在同一行打印出一个问题,表数据。当然,我可以识别css_选择器(“td”),但这会打印出: 名称 地址 城市/州 电话在同一列 而我正试图创造: 姓名、地址、城市/州、电话至同一行 HTML:(见附图) 这似乎是一个愚蠢的问题,需要挂断电话。。。但是我已经被困了很长一段时间,无法隔离标记 代码: for x in link: driver.get(x) try: i = 0 while 0 < 20: name = driver.find_elements

我在同一行打印出一个问题,表数据。当然,我可以识别css_选择器(“td”),但这会打印出: 名称 地址 城市/州 电话在同一列 而我正试图创造: 姓名、地址、城市/州、电话至同一行

HTML:(见附图)

这似乎是一个愚蠢的问题,需要挂断电话。。。但是我已经被困了很长一段时间,无法隔离

标记

代码:

for x in link:
driver.get(x)
try:
    i = 0
    while 0 < 20:
        name = driver.find_elements_by_xpath("/html/body/div[2]/div/div[1]/div/div/table/tbody/tr/td[1]/table/tbody/tr['"+str(i)+"']/td/strong")
        if name[i].is_displayed():
            print(name[i].text)

            i = i + 1
        else:
            i = i + 1
except(NoSuchElementException,JavascriptException, IndexError):
    continue
对于链接中的x:
驱动程序。获取(x)
尝试:
i=0
当0<20时:
name=driver。通过xpath(“/html/body/div[2]/div/div[1]/div/div/table/tbody/tr/td[1]/table/tbody/tr['”+str(i)+“]/td/strong”)查找元素
如果显示了名称[i]。则为()
打印(名称[i]。文本)
i=i+1
其他:
i=i+1
除了(NoSuchElementException、JavascriptException、Indexer):
持续
我用这种方式识别它,试图简单地返回正在处理的兄弟姐妹的文本。。。还是没用<代码>驱动程序。通过css选择器(“td”)查找元素
还返回整个表数据。。。但是,如果您能够使用
css\u选择器(“td”)
识别父
元素,以打印名称地址城市/州电话,则可以使用以下选项:

  • 姓名:

  • 地址:

  • 城市/州:

  • 电话:


如果您能够使用
css\u选择器(“td”)
识别父元素
,以打印名称地址城市/州电话,则可以使用以下选项:

  • 姓名:

  • 地址:

  • 城市/州:

  • 电话:



添加新行
\n
的文本中,您可以将其拆分或删除

tds = driver.find_elements_by_css_selector("td")
for td in tds:
     text = td.text.split('\n')
     print(text) # list: ['text1', 'text2', 'text3', 'text4']

     text = td.text.replace('\n', ' ')
     print(text) # str: 'textr text2 text3 text4'


将新行
\n
添加到
的文本中,您可以将其拆分或删除

tds = driver.find_elements_by_css_selector("td")
for td in tds:
     text = td.text.split('\n')
     print(text) # list: ['text1', 'text2', 'text3', 'text4']

     text = td.text.replace('\n', ' ')
     print(text) # str: 'textr text2 text3 text4'

此场景中也可以使用BeautifulSoup

>>>from bs4 import beautifulsoup
>>>import requests
>>>contents=requests.get(url).text

>>>soup=beautifulsoup('lxml',contents)

>>>>Text=soup.find('body').text

并检查是否存在“br”标记,然后在该场景中也可以使用skip

BeautifulSoup

>>>from bs4 import beautifulsoup
>>>import requests
>>>contents=requests.get(url).text

>>>soup=beautifulsoup('lxml',contents)

>>>>Text=soup.find('body').text
for x in link:
driver.get(x)
try:

    names = driver.find_elements_by_css_selector("td")
    i = 0
    while i <= len(names):
        address = names[i].text.splitlines()
        r = len(address)

        if r == 4:
            print(x, " | ",address[0], " | ", address[1], " | ", address[2], " | ", address[3])


        elif r == 3:

            print(x, " | ",address[0], " | ", address[1], " | ", address[2])

        else:
            pass
        i=i+1


except(NoSuchElementException, IndexError):
    continue
并检查是否存在“br”标记,然后跳过链接中x的条件:
for x in link:
driver.get(x)
try:

    names = driver.find_elements_by_css_selector("td")
    i = 0
    while i <= len(names):
        address = names[i].text.splitlines()
        r = len(address)

        if r == 4:
            print(x, " | ",address[0], " | ", address[1], " | ", address[2], " | ", address[3])


        elif r == 3:

            print(x, " | ",address[0], " | ", address[1], " | ", address[2])

        else:
            pass
        i=i+1


except(NoSuchElementException, IndexError):
    continue
驱动程序。获取(x) 尝试: 名称=驱动程序。通过css选择器(“td”)查找元素 i=0 当i
用于链接中的x时:
驱动程序。获取(x)
尝试:
名称=驱动程序。通过css选择器(“td”)查找元素
i=0

除非绝对必要,否则请不要将信息作为图像共享。请参阅:,。您能分享您的代码吗?这可能与问题没有直接关系,但是0<20:
i=i+1时的
情况如何;否则:i=i+1?除非绝对必要,否则请勿以图像形式共享信息。请参阅:,。您能分享您的代码吗?这可能与问题没有直接关系,但是0<20:
i=i+1时的
情况如何;否则:i=i+1
for x in link:
driver.get(x)
try:

    names = driver.find_elements_by_css_selector("td")
    i = 0
    while i <= len(names):
        address = names[i].text.splitlines()
        r = len(address)

        if r == 4:
            print(x, " | ",address[0], " | ", address[1], " | ", address[2], " | ", address[3])


        elif r == 3:

            print(x, " | ",address[0], " | ", address[1], " | ", address[2])

        else:
            pass
        i=i+1


except(NoSuchElementException, IndexError):
    continue