【问题标题】:For loop doesn't work for web scraping Google search in pythonFor循环不适用于在python中抓取Google搜索
【发布时间】: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...

不确定缺少哪一部分。

【问题讨论】:

标签: python pandas loops for-loop web-scraping


【解决方案1】:

您需要将 CEO 创建为一个列表并在 for 循环中附加到它,这样您就不会一直覆盖它

【讨论】:

    猜你喜欢
    • 2020-06-24
    • 2014-12-27
    • 1970-01-01
    • 2015-09-14
    • 2018-03-13
    • 1970-01-01
    • 2014-01-29
    • 2022-01-25
    • 1970-01-01
    相关资源
    最近更新 更多