Python 3.x 我想从文本输入中提取第三行

Python 3.x 我想从文本输入中提取第三行,python-3.x,selenium-webdriver,web-scraping,beautifulsoup,Python 3.x,Selenium Webdriver,Web Scraping,Beautifulsoup,我必须提取文本的第三行 URL='1〕https://simonsmith.github.io/github-user-search/#/search?q=benjamn' browser=webdriver.Chrome() browser.get(URL) 时间。睡眠(20) content=browser.page\u来源 汤=美汤(内容) 查找所有('a'): n=link.get('href') n=re.sub(r“\\”,'',n) 打印(n) 在本例中,我只从输出中收集benj

我必须提取文本的第三行

URL='1〕https://simonsmith.github.io/github-user-search/#/search?q=benjamn'
browser=webdriver.Chrome()
browser.get(URL)
时间。睡眠(20)
content=browser.page\u来源
汤=美汤(内容)
查找所有('a'):
n=link.get('href')
n=re.sub(r“\\”,'',n)
打印(n)
在本例中,我只从输出中收集benjamn,并丢弃其余的

输出:

/
https://developer.github.com/v3/
/benjamn
/BenjamNathan
/benjamni
/benjamnnzz
/BenjamnTal
/benjamncresnik
/benjamn1012990
/benjamnsmith
/benjamn77
/BENJAMNDO4FO
/benjamnzzzz
/benjamn25
/benjamnn
/benjamn2
/benjamnwilliams
https://github.com/simonsmith/github-user-search
你写道:

for link in soup.find_all('a'):
假设你有:

links = list(soup.find_all('a'))
for link in links:
然后
链接[2]
将包含所需的链接

同样,您可以使用:

for i, link in enumerate(soup.find_all('a')):

并将注意力集中在
i==2

的特定链接上,您可以更好地优化选择器并使用css选择器

如果您使用

li .u-flex

第一,速度更快;你将只得到15个链接的人。如果随后使用
find\u element\u by\u css\u selector
,则只返回第一个匹配项

即:

browser.find_element_by_css_selector("li .u-flex").get_attribute("href")
无需
BeautifulSoup
,但等效物为:

soup.select_one('li .u-flex')['href']

要获取值
benjamn
,请使用
WebdriverWait
element\u,以便使用以下xpath单击

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

URL = 'https://simonsmith.github.io/github-user-search/#/search?q=benjamn'
browser = webdriver.Chrome()
browser.get(URL)
element=WebDriverWait(browser, 15).until(EC.element_to_be_clickable((By.XPATH,"(//a[starts-with(@class,'User_')]//p[starts-with(@class,'User_')])[1]")))
print(element.text)
控制台上打印的输出: 本杰明


要打印所有文本值,请使用以下代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

URL = 'https://simonsmith.github.io/github-user-search/#/search?q=benjamn'
browser = webdriver.Chrome()
browser.get(URL)
elements=WebDriverWait(browser, 15).until(EC.visibility_of_all_elements_located((By.XPATH,"//a[starts-with(@class,'User_')]//p[starts-with(@class,'User_')]")))

for element in elements:
 print(element.text)
输出:

benjamn
BenjamNathan
benjamni
benjamnnzz
BenjamnTal
benjamncresnik
benjamn1012990
benjamnsmith
benjamn77
BENJAMNDO4FO
benjamnzzzz
benjamn25
benjamnn
benjamn2
benjamnwilliams
https://simonsmith.github.io/github-user-search/#/benjamn

您可以使用selenium获取该链接,使用xpath,而不是像下面这样硬编码索引:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

LINK = 'https://simonsmith.github.io/github-user-search/#/search?q=benjamn'

with webdriver.Chrome() as driver:
    wait = WebDriverWait(driver, 10)
    driver.get(LINK)
    expected_link = wait.until(EC.presence_of_element_located((By.XPATH,"//a[./*[contains(@class,'username')]]")))
    print(expected_link.get_attribute("href"))
输出:

benjamn
BenjamNathan
benjamni
benjamnnzz
BenjamnTal
benjamncresnik
benjamn1012990
benjamnsmith
benjamn77
BENJAMNDO4FO
benjamnzzzz
benjamn25
benjamnn
benjamn2
benjamnwilliams
https://simonsmith.github.io/github-user-search/#/benjamn
考虑使用,如果英语不是你的母语。