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
考虑使用,如果英语不是你的母语。