Google 学者个人资料抓取 PHP
Google Scholar profile scrape PHP
我想使用 SimpleHtmlDom 从 google 学者个人资料中删除出版物。
我有抓取项目的脚本,但问题是,我只能抓取显示的项目。
当我像这样使用 url 时
$html->load_file("http://scholar.google.se/citations?user=Sx4G9YgAAAAJ");
只显示了 20 个项目。我可以在更改 url
时增加数字
$html->load_file("https://scholar.google.se/citations?user=Sx4G9YgAAAAJ&hl=&view_op=list_works&pagesize=100");
通过设置 "pagesize" 属性。但问题是,100 是最大的出版物数量,网页能够显示什么。
有什么方法可以从配置文件中删除所有项目吗?
您无法一次获得所有项目,但您可以一次获得 100 个项目,然后再获得 100 个,依此类推,这里是 URL
https://scholar.google.com/citations?user=Sx4G9YgAAAAJ&hl=&view_op=list_works&cstart=100&pagesize=100
在上面URL关注cstart属性,假设你已经抓取了100个项目,那么现在你将进入cstart=100
并抓取另外100个列表然后 cstart=200
依此类推,直到获得所有出版物。
希望对您有所帮助
您必须向请求传递额外的分页参数 url。
cstart
- 参数定义结果偏移量。它会跳过给定数量的结果。它用于分页。 (例如,0(默认)是结果的第一页,20 是结果的第二页,40 是结果的第三页,等等)。
pagesize
- 参数将结果数定义为 return。 (例如,20(默认)returns 20 个结果,40 returns 40 个结果,等等)。 return 的最大结果数为 100。
因此,您的 URL 应该如下所示:
https://scholar.google.com/citations?user=WLBAYWAAAAAJ&hl=en&cstart=100&pagesize=100
您也可以使用像 SerpApi 这样的第三方解决方案来为您完成这项工作。这是付费 API 免费试用。
示例 PHP 代码(也可在其他库中使用)检索结果的第二页:
require 'path/to/google_search_results';
$query = [
"api_key" => "secret_api_key",
"engine" => "google_scholar_author",
"hl" => "en",
"author_id" => "WLBAYWAAAAAJ",
"num" => "100",
"start" => "100"
];
$search = new GoogleSearch();
$results = $search->json($query);
示例 JSON 输出:
"articles": [
{
"title": "Geographic localization of knowledge spillovers as evidenced by patent citations",
"link": "https://scholar.google.com/citations?view_op=view_citation&hl=en&user=WLBAYWAAAAAJ&cstart=100&pagesize=100&citation_for_view=WLBAYWAAAAAJ:HGTzPopzzJcC",
"citation_id": "WLBAYWAAAAAJ:HGTzPopzzJcC",
"authors": "AB Jaffe, M Trajtenberg, R Henderson",
"publication": "Patents, citations, and innovations: a window on the knowledge economy, 155-178, 2002",
"cited_by": {
"value": 18,
"link": "https://scholar.google.com/scholar?oi=bibs&hl=en&cites=8561816228378857607",
"serpapi_link": "https://serpapi.com/search.json?cites=8561816228378857607&engine=google_scholar&hl=en",
"cites_id": "8561816228378857607"
},
"year": "2002"
},
{
"title": "IPR, innovation, economic growth and development",
"link": "https://scholar.google.com/citations?view_op=view_citation&hl=en&user=WLBAYWAAAAAJ&cstart=100&pagesize=100&citation_for_view=WLBAYWAAAAAJ:70eg2SAEIzsC",
"citation_id": "WLBAYWAAAAAJ:70eg2SAEIzsC",
"authors": "AGZ Hu, AB Jaffe",
"publication": "Department of Economics, National University of Singapore, 2007",
"cited_by": {
"value": 17,
"link": "https://scholar.google.com/scholar?oi=bibs&hl=en&cites=7886734392494692167",
"serpapi_link": "https://serpapi.com/search.json?cites=7886734392494692167&engine=google_scholar&hl=en",
"cites_id": "7886734392494692167"
},
"year": "2007"
},
...
]
查看 documentation 了解更多详情。
免责声明:我在 SerpApi 工作。
我想使用 SimpleHtmlDom 从 google 学者个人资料中删除出版物。
我有抓取项目的脚本,但问题是,我只能抓取显示的项目。
当我像这样使用 url 时
$html->load_file("http://scholar.google.se/citations?user=Sx4G9YgAAAAJ");
只显示了 20 个项目。我可以在更改 url
时增加数字$html->load_file("https://scholar.google.se/citations?user=Sx4G9YgAAAAJ&hl=&view_op=list_works&pagesize=100");
通过设置 "pagesize" 属性。但问题是,100 是最大的出版物数量,网页能够显示什么。 有什么方法可以从配置文件中删除所有项目吗?
您无法一次获得所有项目,但您可以一次获得 100 个项目,然后再获得 100 个,依此类推,这里是 URL
https://scholar.google.com/citations?user=Sx4G9YgAAAAJ&hl=&view_op=list_works&cstart=100&pagesize=100
在上面URL关注cstart属性,假设你已经抓取了100个项目,那么现在你将进入cstart=100
并抓取另外100个列表然后 cstart=200
依此类推,直到获得所有出版物。
希望对您有所帮助
您必须向请求传递额外的分页参数 url。
cstart
- 参数定义结果偏移量。它会跳过给定数量的结果。它用于分页。 (例如,0(默认)是结果的第一页,20 是结果的第二页,40 是结果的第三页,等等)。
pagesize
- 参数将结果数定义为 return。 (例如,20(默认)returns 20 个结果,40 returns 40 个结果,等等)。 return 的最大结果数为 100。
因此,您的 URL 应该如下所示:
https://scholar.google.com/citations?user=WLBAYWAAAAAJ&hl=en&cstart=100&pagesize=100
您也可以使用像 SerpApi 这样的第三方解决方案来为您完成这项工作。这是付费 API 免费试用。
示例 PHP 代码(也可在其他库中使用)检索结果的第二页:
require 'path/to/google_search_results';
$query = [
"api_key" => "secret_api_key",
"engine" => "google_scholar_author",
"hl" => "en",
"author_id" => "WLBAYWAAAAAJ",
"num" => "100",
"start" => "100"
];
$search = new GoogleSearch();
$results = $search->json($query);
示例 JSON 输出:
"articles": [
{
"title": "Geographic localization of knowledge spillovers as evidenced by patent citations",
"link": "https://scholar.google.com/citations?view_op=view_citation&hl=en&user=WLBAYWAAAAAJ&cstart=100&pagesize=100&citation_for_view=WLBAYWAAAAAJ:HGTzPopzzJcC",
"citation_id": "WLBAYWAAAAAJ:HGTzPopzzJcC",
"authors": "AB Jaffe, M Trajtenberg, R Henderson",
"publication": "Patents, citations, and innovations: a window on the knowledge economy, 155-178, 2002",
"cited_by": {
"value": 18,
"link": "https://scholar.google.com/scholar?oi=bibs&hl=en&cites=8561816228378857607",
"serpapi_link": "https://serpapi.com/search.json?cites=8561816228378857607&engine=google_scholar&hl=en",
"cites_id": "8561816228378857607"
},
"year": "2002"
},
{
"title": "IPR, innovation, economic growth and development",
"link": "https://scholar.google.com/citations?view_op=view_citation&hl=en&user=WLBAYWAAAAAJ&cstart=100&pagesize=100&citation_for_view=WLBAYWAAAAAJ:70eg2SAEIzsC",
"citation_id": "WLBAYWAAAAAJ:70eg2SAEIzsC",
"authors": "AGZ Hu, AB Jaffe",
"publication": "Department of Economics, National University of Singapore, 2007",
"cited_by": {
"value": 17,
"link": "https://scholar.google.com/scholar?oi=bibs&hl=en&cites=7886734392494692167",
"serpapi_link": "https://serpapi.com/search.json?cites=7886734392494692167&engine=google_scholar&hl=en",
"cites_id": "7886734392494692167"
},
"year": "2007"
},
...
]
查看 documentation 了解更多详情。
免责声明:我在 SerpApi 工作。