python+selenium+scrapy搭建简单爬虫
2016-08-19 14:09
399 查看
接触爬虫也有一段时间了,下面我就来简单介绍一种我认为较为直观有效的方式。基本搭配:python2.7+selenium+scrapy,selenium用来模拟真实用户操作浏览器的过程,scrapy用来提取网页内容。关于安装方式我就暂且提一下我接触过的两种:1.安装python2.7,使用pip install+包名的形式安装selenium和scrapy。一般这种情况下装scrapy都比较痛苦。如果直接使用命令行无法安装成功,那么可以去官网上下载对应的包直接运行。2.安装Anaconda,使用pip install+包名或者conda install+包名的形式安装selenium和scrapy。爬取的过程概括一下就是首先定义一个浏览器对象,然后使用这个对象实现诸如鼠标点击,键盘发送等一系列的操作。对于想要提取内容的页面,就使用scrapy中的Selector构造xpath去解析网页源码。这么讲可能太抽象,所以我把一个比较简单的爬取指定企业招聘信息的程序贴出来具体讲解。实现基本操作的代码上方均有注释。#coding:utf-8import sysreload(sys)sys.setdefaultencoding( "utf-8" )from selenium import webdriverfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.common.action_chains import ActionChainsfrom scrapy.selector import Selectorimport timeimport osdef writeFile(dirPath, page): data = Selector(text = page).xpath("//td[@class='zwmc']/div/a") titles = data.xpath('string(.)').extract() timeMarks = Selector(text = browser.page_source).xpath("//td[@class='gxsj']/span/text()").extract() links = Selector(text = browser.page_source).xpath("//td[@class='zwmc']/div/a/@href").extract() for i in range(len(titles)): fileName = titles[i].replace(':', '-').replace('/', '-').replace('\\', '-').replace('*', 'x').replace('|', '-').replace('?', '-').replace('<', '-').replace('>', '-').replace('"', '-').replace('\n', '-').replace('\t', '-') filePath = dirPath + os.sep + fileName + '.txt' with open(filePath, 'w') as fp: fp.write(titles[i]) fp.write('$***$') fp.write(timeMarks[i]) fp.write('$***$') fp.write(links[i])def searchFunction(browser, url, keyWord, dirPath): browser.get(url)#勾选城市 browser.find_element_by_xpath("//input[@id='buttonSelCity']").click() browser.find_element_by_xpath("//table[@class='sPopupTabC']/tbody/tr[1]/td/label/input[@iname='北京']").click() browser.find_element_by_xpath("//table[@class='sPopupTabC']/tbody/tr[1]/td/label/input[@iname='上海']").click() browser.find_element_by_xpath("//table[@class='sPopupTabC']/tbody/tr[3]/td/label/input[@iname='南京']").click() browser.find_element_by_xpath("//table[@class='sPopupTabC']/tbody/tr[4]/td/label/input[@iname='苏州']").click() browser.find_element_by_xpath("//table[@class='sPopupTabC']/tbody/tr[4]/td/label/input[@iname='无锡']").click() browser.find_element_by_xpath("//div[@class='sPopupTitle250']/div/a[1]").click()#定位搜索框 searchBox = browser.find_element_by_xpath("//div[@class='keyword']/input[@type='text']")#发送搜索内容 searchBox.send_keys(keyWord)#确认搜索 browser.find_element_by_xpath("//div[@class='btn']/button[@class='doSearch']").click() totalCount = Selector(text = browser.page_source).xpath("//span[@class='search_yx_tj']/em/text()").extract()[0] pageOver = int(totalCount) / 40 for i in range(pageOver): time.sleep(3) writeFile(dirPath, browser.page_source) browser.find_element_by_link_text("下一页").click() time.sleep(3) writeFile(dirPath, browser.page_source) if __name__ == '__main__': print 'START' url = 'http://www.zhaopin.com/' keyWord = u"华为技术有限公司" dirPath = keyWord + u"招聘信息" if not os.path.exists(dirPath): os.makedirs(dirPath)#定义一个火狐浏览器对象 browser = webdriver.Firefox() searchFunction(browser, url, keyWord, dirPath) browser.close() print 'END' |
相关文章推荐
- python+selenium+scrapy搭建简单爬虫
- 使用Python的Scrapy框架编写web爬虫的简单示例
- python scrapy简单爬虫记录(实现简单爬取知乎)
- Selenium + PhantomJS + python 简单实现爬虫的功能
- Python爬虫-scrapy框架简单应用
- 用Scrapy与Django一起搭建一个简单的爬虫框架
- [Python爬虫]Scrapy配合Selenium和PhantomJS爬取动态网页
- Python爬虫系列之----Scrapy(四)一个简单的示例
- 【实战\聚焦Python分布式爬虫必学框架Scrapy 打造搜索引擎项目笔记】第2章 windows下搭建开发环境
- Python的Scrapy爬虫框架简单学习笔记
- Selenium + PhantomJS + python 简单实现爬虫的功能
- [Python]使用Scrapy爬虫框架简单爬取图片并保存本地
- 第三百五十节,Python分布式爬虫打造搜索引擎Scrapy精讲—selenium模块是一个python操作浏览器软件的一个模块,可以实现js动态网页请求
- Python爬虫框架Scrapy 学习笔记 1 ----- 环境搭建
- Python 爬虫 正则抽取网页数据和Scrapy简单使用
- Python开发爬虫之从虚拟机安装到Scrapy环境搭建
- Python之Scrapy爬虫框架安装及简单使用
- python爬虫的最佳实践(五)--selenium+PhantomJS的简单使用
- 第三百五十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—将selenium操作谷歌浏览器集成到scrapy中
- 【Python学习系列五】Python网络爬虫框架Scrapy环境搭建