此代码使用sql-alchemy调用mysql表中的表
engine = create_engine("mysql+mysqldb://o:"+'o'+"@10.10.10.10/hukke"+"?charset=utf8mb4")
x="SELECT * FROM table1 Where "
data = pd.read_sql_query(x,con = engine)
print(data)
输出:
0 | 1
userid22 | sun
userid33 | mon
userid44 | earth
......
......
.....
表1具有n行。例如,userid22具有大约10 k行。像3000个用户ID在表2中有100万行
如何调用第一个表的输出以获取第二个表中的值
表1返回了userid22,userid33,userid44等。因此采用这三个值可以调用与表2中的值相关的行。
表1模式:
0 | 1
userid22 | sun
userid33 | mon
userid44 | earth
......
......
.....
表2模式:
0 | 1 | 2
userid22 | abc | acd
userid33 | bdc | axw
userid44 | earth | asd
......
......
.....
我需要的输出:
使用表1中的前三个返回列。调用表2中的值。
答案 0 :(得分:2)
第一个邮政编码具有属性data-idx
,该属性的索引从0开始运行,因此第一个邮政编码将具有data-idx="0"
。您还需要每次重新定位搜索栏,以防止StaleElementReferenceException
driver.maximize_window()
driver.get(url)
pincodencodee = {'new york': -1, 'delhi': -1}
for key in pincodencodee.keys():
search = driver.find_element_by_name('q')
search.clear()
search.send_keys(key + ' pincode')
search.send_keys(Keys.RETURN)
code = driver.find_element_by_css_selector('.rl_item[data-idx="0"] .title')
pincodencodee[key] = code.text
driver.quit()
print(pincodencodee) # {'new york': '10001', 'delhi': '110001'}
答案 1 :(得分:0)
似乎需要加入
select a.col0, a.col1, b.col1, b.col2
from tabl1 a
inner join b ona.col0 = b.col0
或表1的前3个值
select a.col0, a.col1, b.col1, b.col2
from (
select col0
from table1
order by col0
limit 3
) t a
inner join b ona.col0 = b.col0
答案 2 :(得分:-1)
好的,这是一个需要恒定dom结构或繁琐的正则表达式的问题。
我不会在正则表达式上浪费时间,但是我可以帮助您提取代码本身。
所以我将如何处理这个问题是尝试在浏览器上执行javascript,这样就可以了:
webdriver.execute_script('script')
这本身是不好的,所以让我们更进一步。让我们初始化一个变量并将其命名为area_code
,以便随后将其推入列表,然后将其作为参数传递给execute_script()
函数。还可以使用javascript抓取代码。
area_code = "0"
webdriver.execute_script("arguments[0] = document.getElementsByClassName('title')[0].innerText", area_code )
第二行arguments[0]
的确是我们正在设置的area_code
变量。
然后,您可以执行键值或2D数组来存储数据。
答案 3 :(得分:-1)
您想要的输出是:
{Newyork: 10001, Delhi: 110001}
大概是一个Python Dictionary,您需要使用提供的列表中的Keys
以及Google Search结果中的Values
来构造。为此,您可以使用以下Locator Strategies:
代码块:
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
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.keys import Keys
cities = ['newyork','delhi']
search_texts = [city + ' pincode' for city in cities]
print(search_texts)
pincode = []
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("start-maximized")
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=chrome_options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
driver.get("https://www.google.com/")
for my_text in search_texts:
try:
search = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, "q")))
search.clear()
search.send_keys(my_text)
search.send_keys(Keys.RETURN)
element_text = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='rl_item rl_item_base']//div[@class='title']"))).text
pincode.append(element_text)
except TimeoutException as e:
print(e)
Dict = dict(zip(cities, pincode))
print(Dict)
driver.quit()
控制台输出:
['newyork pincode', 'delhi pincode']
{'newyork': '10001', 'delhi': '110001'}