我成功地组合了一个脚本,以从Linkedin中的销售导航器检索搜索结果。以下是使用python,selenium和bs4的脚本。
with tf.compat.v1.variable_scope('backbone', reuse=tf.compat.v1.AUTO_REUSE):
net = tf.compat.v1.layers.separable_conv2d(inputs, 16, 3, 1, 'same',
activation=tf.nn.elu,
depthwise_initializer=tf.keras.initializers.glorot_normal(),
pointwise_initializer=tf.keras.initializers.glorot_normal(),
name='conv1')
net = tf.compat.v1.layers.max_pooling2d(net, 2, 2, padding='same')
net = tf.compat.v1.layers.separable_conv2d(net, 32, 3, 1, 'same',
activation=tf.nn.elu,
depthwise_initializer=tf.keras.initializers.glorot_normal(),
pointwise_initializer=tf.keras.initializers.glorot_normal(),
name='conv2')
与结果数无关,答案始终为10(即)仅返回10个结果。在对消息来源进行进一步调查后,我注意到以下内容:
前10个结果以不同的级别表示,其余的则在div标签下,其样式类为 deferred area 。尽管对于所有搜索结果(result-lockup__name), dt类名都是相同的,但是由于级别的变化,我无法访问/检索它。
在这种情况下检索所有结果的正确方法是什么?
编辑1
编辑2
请求的页面来源
答案 0 :(得分:2)
许多网站不会在页面加载时显示所有搜索结果,而是仅在需要时显示它们,例如,访客不断滚动以表明他们想查看更多内容。
我们可以使用javascript将window.scrollTo(0,document.body.scrollHeight)
滚动到页面底部(如果您希望获得数百个结果,则可能要循环此操作),将所有结果强制显示在页面上,然后我们可以抓取HTML。
下面应该解决这个问题。
browser = webdriver.Firefox(executable_path=r'D:\geckodriver\geckodriver.exe')
url1 = "https://www.linkedin.com/sales/search/company?companySize=E&geoIncluded=emea%3A0%2Ceurope%3A0&industryIncluded=6&keywords=AI&page=1&searchSessionId=zreYu57eQo%2BSZiFskdWJqg%3D%3D"
browser.get(url1)
time.sleep(15)
browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
time.sleep(15)
parsed = browser.find_element_by_tag_name('html').get_attribute('innerHTML')
soup = BeautifulSoup(parsed, 'html.parser')
search_results = soup.select('dt.result-lockup__name a')
print(len(search_results))