Python爬虫实践(十一):selenium+phantomjs+正则表达式爬取文章并保存

爬取的是三联生活周刊的这篇文章:

英国"脱欧":蝴蝶的翅膀动了(url:点击打开链接)

一、环境准备:

系统:Ubuntu

IDE:wingide

安装以及破解wingide可参考这篇文章:点击打开链接,需要注意的是,经过验证,这个破解的py脚本对最新的wingide 5.1破解失败,在官网下载wingide的时候,点击older version,安装5.0.X的版本,我安装的是5.0.1版本。

安装Phantom可以直接在这里下载,利用 tar 命令解压,之后将可执行文件放入系统路径,使用命令(参考这里):

sudo ln -s  ~/bin/phantomjs/bin/phantomjs   /usr/local/bin/phantomjs

安装selenium更简单:pip install selenium 

二、流程

先查看页面源代码,可以发现文字段落都是由

包围起来的,所以正则表达式也不难写

通过使用phantomjs

爬取网页之后要删除一些不需要的元素,只留下文本,故定义一个工具类 class tool,用于删除不要的元素


三、代码:

#coding:utf-8
from selenium import webdriver
import urllib
import urllib2
import re
import time
 
class Art():
    def __init__(self,url):
        self.url = url
        self.tool = tool()
        #新建一个txt文件,保存获取文章
        self.file = open("articale.txt","w")
    #获取页面的html    
    def get_page(self):
        driver = webdriver.PhantomJS()#Phantomjs()也可改为Firefox(),注意大小写
        driver.get(self.url)
        time.sleep(7)
        #print driver.page_source#这个函数获取页面的html
        response = driver.page_source.encode('utf-8')
        #print response
        print "Success To Create the screenshot & gather html"
        driver.close()
        return response
    #获取文章标题
    def get_title(self,page):
        title_pattern = re.compile('

(.*?)

', re.S)         title = re.findall(title_pattern,page)         return title     #获取文章摘要     def get_abstrat(self,page):         abtract_pattern = re.compile('
(.*?)
',re.S)         abtract = re.findall(abtract_pattern,page)         return abtract     #获取正文内容     def get_content(self,page):           contents = []         content_pattern = re.compile('
.*?

(.*?)|

|| ')     rspan = re.compile('')     def replace(self,x):         x = re.sub(self.rmhref, "",x)         x = re.sub(self.rspan,"",x)         return x.strip()      article=Art('http://www.lifeweek.com.cn/2016/0624/47804.shtml') article.start()


四、运行结果

Python爬虫实践(十一):selenium+phantomjs+正则表达式爬取文章并保存_第1张图片

你可能感兴趣的:(Python)