【发布时间】:2020-06-23 21:29:22
【问题描述】:
我正在使用关键字列表进行网络抓取 Google 搜索。用于抓取单个页面的嵌套 For 循环效果很好。但是,列表中的另一个 for 循环搜索关键字不起作用,因为我打算 scrapes 每个搜索结果的数据。结果没有得到前两个关键字的搜索结果,而是只得到了最后一个关键字的结果。
代码如下:
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...
不确定缺少哪一部分。
【问题讨论】:
-
为什么是
str().strip('[]').strip("''")?这感觉就像一个黑客。是否有必要创建Series?最好将结果添加到临时数据结构中,然后使用它来创建 DataFrame。 -
@0x5453 感谢您的建议。我试过了,但似乎不是它不起作用的原因
-
这个问题与您最近发布的其他两个类似问题有很大不同吗? stackoverflow.com/questions/60628327/…, stackoverflow.com/questions/60643795/…
标签: python pandas loops for-loop web-scraping