网络抓取python中的多个谷歌学者页面

时间:2021-04-08 01:59:18

标签: python selenium for-loop web-scraping google-scholar

我想抓取多个 google 学者用户配置文件 - 出版物、期刊、引文等。我已经编写了用于抓取给定 URL 的用户配置文件的 Python 代码。现在,假设我在这样的 excel 文件中有 100 个名称和相应的网址。

name       link

Autor      https://scholar.google.com/citations?user=cp-8uaAAAAAJ&hl=en
Dorn       https://scholar.google.com/citations?user=w3Dri00AAAAJ&hl=en
Hanson     https://scholar.google.com/citations?user=nMtHiQsAAAAJ&hl=en
Borjas     https://scholar.google.com/citations?user=Patm-BEAAAAJ&hl=en
....

我的问题是我能否读取该文件的“链接”列并为 url 编写一个 for 循环,以便我可以抓取这些配置文件中的每一个并将结果附加到同一个文件中。我似乎有点牵强,但我希望有办法做到这一点。提前致谢!

2 个答案:

答案 0 :(得分:1)

您可以使用 pandas.read_csv() 从 csv 读取特定文件。例如:

import pandas as pd

df = pd.read_csv('data.csv')
arr = []
link_col = df['link']
for i in link_col:
    arr.append(i);
   
print(arr)

这将允许您仅提取链接列并将每个值附加到您的数组中。如果您想了解更多信息,可以参考pandas

答案 1 :(得分:0)

希望对你来说不会太高级

1 为您的页面创建一个类

class Pages:
    def __init__(self, name=None, link=None):
        self.name = name
        self.link = link

2 创建 pages 列表

pages = []

3 查找行定位器,例如:

rows = driver.find_elements_by_css_selector("your_selector")

行数必须与表中的行数相同。例如,对于列表中的项目,rows 编号将为 20。

4 获取每一行的值:

for row in rows:
    name = row.find_element_by_css_selector("here is a unique selector for each data field for name").text
    link = row.find_element_by_css_selector("here is a unique selector for each data field for link").text

5 创建页面对象:

page = Page(name=name,link=link)

6 将所有行放入列表:

pages.append(page)

结果

页面列表(对象 page),其中第一行可以用 pages[0] 访问,第二行可以用 pages[1] 访问,依此类推。

附言 如果您在使用选择器时遇到问题,请将它们视为不同的问题。 我想我已经向你解释了这个概念,所以你就可以开始了。