python - For循环不适用于在python中抓取Google搜索
问题描述
我正在使用关键字列表进行网络抓取 Google 搜索。用于抓取单个页面的嵌套 For 循环效果很好。但是,列表中的另一个 for 循环搜索关键字无法正常工作,因为它会为每个搜索结果抓取数据。结果没有得到前两个关键字的搜索结果,而只得到了最后一个关键字的结果。
这是代码:
browser = webdriver.Chrome(r"C:\...\chromedriver.exe")
df = pd.DataFrame(columns = ['ceo', 'value'])
baseUrl = 'https://www.google.com/search?q='
ceo_list = ["Bill Gates", "Elon Musk", "Warren Buffet"]
values =[]
for ceo in ceo_list:
browser.get(baseUrl + ceo)
table = browser.find_elements_by_css_selector('div.ifM9O')
for row in table:
ceo = str(([c.text for c in row.find_elements_by_css_selector('div.kno-ecr-pt.PZPZlf.gsmt.i8lZMc')])).strip('[]').strip("''")
value = str(([c.text for c in row.find_elements_by_css_selector('div.Z1hOCe')])).strip('[]').strip("''")
ceo = pd.Series(ceo)
value = pd.Series(value)
df = df.assign(**{'ceo': ceo, 'value': value})
print(df)
browser.close()
这是输出:
ceo value
0 Warren Buffett Born: August 30, 1930 (age 89 years), Omaha, N...
我期待的是:
ceo value
0 Bill Gates Born:..........
1 Elon Musk Born:...........
2 Warren Buffett Born: August 30, 1930 (age 89 years), Omaha, N...
不确定缺少哪个部分。
解决方案
您需要将 CEO 创建为列表并在 for 循环中附加到它,这样您就不会一直覆盖它
推荐阅读
- java - 无法计数在java中使用pdfbox的广告字符
- r - 过滤和总结但保持“零”
- python - 如何与def进行口袋妖怪对战
- java - Java 8 及更高版本中的抽象类和接口有什么区别?
- android - Android:计算switch语句中的案例数,知道最后一个案例
- vim - 如何关闭没有文件名或文件类型的新 vim 窗口的语法突出显示?
- javascript - 无论 CSP 中有什么,Cordova 都不会获取任何 base64
- maven - 将 Active Choices 反应参数插件与 Maven 元数据插件一起使用
- c - 1000位数字的13个相邻数字的最大乘积
- amazon-web-services - 实现 Lambda 函数以通过 SSM 运行命令