(.*?)
爬取的是三联生活周刊的这篇文章:
一、环境准备:
系统: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('
(.*?)