python+selenium+xpath实用,避坑,爬虫篇

selenium

selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器。结合谷歌驱动,实现爬取数据。 谷歌驱动下载地址:http://npm.taobao.org/mirrors/chromedriver/ 在谷歌浏览器上输入chrome://version/,可以看到自己谷歌对应的版本,并下载对应的谷歌驱动

对应版本的84.0.4147对应上即可,后面的只是这个版本修复的次数。

设置谷歌驱动参数

option = webdriver.ChromeOptions()
option.add_argument("--user-data-dir=C:\Users\Administrator\AppData\Local\Google\Chrome\User Data")
option.add_argument(--user-agent= + ur.process_request())
option.add_experimental_option(excludeSwitches, [enable-automation])
option.add_experimental_option(useAutomationExtension, False)
self.browser = webdriver.Chrome(options=option,executable_path=rD:scrapychromedriver.exe)
self.browser.maximize_window()
self.browser.implicitly_wait(6)

这里的executable_path填写的是selenium需要的谷歌驱动exe的绝对路径 推荐将利用自己本地的谷歌去驱动,这样或多或少解决一些反爬虫机制问题 option.add_argument("–user-data-dir=C:UsersAdministratorAppDataLocalGoogleChromeUser Data"),这里是使用本地的谷歌位置,本地谷歌位置可以通过输入chrome://version/查看。 只需写到个人资料路径的到UserData。不过在使用的时候,需要先关掉所有的谷歌浏览器打开的页面。 这里推荐使用如下代码,并抛异常,在每次要进入页面的时候。

try:
    os.system(taskkill /im chromedriver.exe /F)
    os.system(taskkill /im chrome.exe /F)
except:
	pass

实用xpath使用攻略

xpath定位,利用创建好的谷歌驱动browser来利用xpath定位获取值或者触发点击: self.browser.find_element_by_xpath(‘xpath路径’).click() self.browser.find_element_by_xpath(‘xpath路径’).text 获取图片地址,src link = self.browser.find_element_by_xpath(‘图片定位的xpath’).get_attribute(‘src’) self.browser.get(link) 获取需要点击的href链接 res = [ ] for link in self.browser.find_elements_by_xpath(‘寻找到一群链接的上一个标签的xpath’’): a = link.get_attribute(‘href’) res.append(a)

其他定位实用

self.browser.find_element_by_id(‘页面唯一的id’).text self.browser.find_element_by_class_name(‘要爬取或者点击的类名’).click()

找到相应的位置,右键,copy里面有xpath:/html/body/div[1]/h1/a,可以获得xpath路径,其他的类似。

设置代理

自测可以使用本地的代理

class my_useragent(object):  # 设置用户代理 防反爬虫,每爬一条数据  切换一次代理
    def process_request(self):
        # user_agent 列表
        USER_AGENT_LIST = [
            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36 QIHU 360SE",
            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36",
            "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 ("
            "Change: 287 c9dfb30)",
            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 "
            "Safari/537.36",
        ]
        # 随机生成user_agent
        agent = random.choice(USER_AGENT_LIST)
        return agent
#设置谷歌驱动参数时使用:
ur = my_useragent()
option.add_argument(--user-agent= + ur.process_request())
经验分享 程序员 微信小程序 职场和发展