我正在使用Python3。下面的代码应允许用户在命令行中输入搜索词,然后用户搜索Google并浏览结果页面的HTML,以找到与CSS选择器匹配的标签( '.r a')。
假设我们搜索“猫”一词。我知道自己要查找的标签存在于“猫”搜索结果页上,因为我自己浏览了该页源。
但是,当我运行代码时,linkElems列表为空。怎么了?
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
ifstream inFS;
ofstream outFS;
string fileName;
double fileNum;
//fileName = "input_prac.txt";
//cout << "Enter file name: " << endl;
//cin >> fileName;
cout << "Opening file..." << endl;
inFS.open("input_prac.txt"); // Open file
if (!inFS.is_open())
{
cout << "Could not open file" << endl;
exit(1);
}
// Read file
while(!inFS.eof())
{
inFS >> fileNum;
cout << fileNum << endl;
}
inFS.close(); // close file
return 0;
}
答案 0 :(得分:1)
“。r”类由Javascript呈现,因此在收到的HTML中不可用。您可以使用selenium或类似方法呈现javascript,也可以尝试使用更具创意的解决方案从标记中提取链接。首先,通过查找不含“ .r”类的标签来检查标签是否存在。 soup.find_all("a")
然后举个例子,您可以使用regex to extract以“ / url?q =“
import re
linkelems = soup.find_all(href=re.compile("^/url\?q=.*"))