python - 如何在列表中的google中搜索关键字并提取数据
问题描述
假设我有一个由城市组成的列表。例如,
zip = ['newyork','delhi']
如何在谷歌上搜索new york pincode
和delhi pincode
提取数据。
该 搜索 给出了结果,并且存在多个密码。我只需要捕捉第一个。
我需要的输出:
{Newyork: 10001, Delhi: 110001}
我试过这个
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
import re
import pandas as pd
import os
import html5lib
import json
import time
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.webdriver.common.keys import Keys
url = "https://www.google.com/"
chromedriver = r"C:\Users\me\chromedriver"
driver = webdriver.Chrome(chromedriver)
driver.implicitly_wait(30)
driver.get(url)
search = driver.find_element_by_name('q')
pincodencodee=['newyork','delhi']
for i in pincodencodee:
search.send_keys(i)
search.send_keys(Keys.RETURN)
time.sleep(5)
driver.quit()
解决方案
第一个邮政编码具有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'}
推荐阅读
- css - 带有过滤器的 DT::datatable 中的列宽
- kubernetes - 如何使用本地开发 minikube 进入 Kubernetes 中的 postgres
- perl - 无法在 /usr/local/share/perl/5.22.1/RRDTool/OO.pm 创建临时文件
- python - 当还使用组数据计算前一个值时,如何在熊猫数据框中使用前一行值
- java - Websphere 服务器中的静态网站托管
- python - 简单的 TensorFlow 2 分类器不会学习
- javascript - 导入在 Typeorm 中给出未定义
- python - python中的动态类对象日志记录
- java - 从文本文件中读取工单数据
- python - Python,循环文本,搜索块