python 批量自动搜索、自动抓取需要的信息简单教程【selenium】


本文主要使用工具为selenium,并以Chrome浏览器为例。

selenium是为web自动化测试开发的,可以模拟任何网页操作,学会了,不仅可以爬取信息,还可以重复做各种无脑网页操作。

selenium适合爬取动态网页,所见即所得,虽然慢了些。有人不喜欢,但个人觉得挺方便的,因为不用学习复杂的各种网页解析技能。但有些反爬网站,针对selenium的,那就得换工具了。

但对于致力于学习爬虫的小伙伴,不建议学这个。老老实实学爬虫该学的各种技术,能够进行大规模甚至并行乃至分布式爬取。

静态网页的话,爬取较为简单。教程很多。

一、安装selenium以及Chrome

教程链接
注意:
使用不同的浏览器,需要配置不同的浏览器驱动。

二、XPath技术和正则表达式技术

需要学习XPath技术和正则表达式技术,xpath能够让程序快速定位,正则表达式打辅助,用来进一步提取需要的信息。

三、获取网页某个位置的xpath

Ctrl + shift + c 打开网页源代码,用鼠标左键选择网页中你想定位的地方,源代码对应位置会高亮。鼠标右键点击高亮的代码,复制xpath

注意:
直接复制的xpath pattern虽然能用,但比较死板不够灵活,网页的结构发生微小的变动,就无法定位了。需要自己进一步根据网页源代码改写xpath路径。找出源码中不变的xpath pattern用来定位。

四、一个简单的示例

from selenium import webdriver
import pandas as pd
import numpy as np

query_list = ['deep learning'
              ]

result_list = []
failed = []
driver = webdriver.Chrome()

for query_text in query_list:
    try:
        driver.get('https://www.google.com')
        driver.implicitly_wait(1)
        # 定位搜索框,并输入查询词
        driver.find_element_by_xpath('/html/body/div[1]/div[3]/form/div[2]/div[1]/div[1]/div/div[2]/input').send_keys('%s\n' % query_text) 
        # 这里的xpath就是右键复制过来的
    except:
        result_list.append(np.nan)
        continue
    try:
        res = driver.find_element_by_xpath('//*[@id="wp-tabs-container"]/div[1]/div[3]/div/div/div/div[2]/h2/span').text 
        # 这里的xpath就是右键复制过来的
        result_list.append(res)
    except:
        result_list.append(np.nan)

res = pd.DataFrame({'drug_name': query_list,
                    'result':result_list
    })

print(res)

selenium库的更多功能和函数,需要自己进一步学习

猜你喜欢

转载自blog.csdn.net/zdx1996/article/details/113935162