最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python爬蟲實(shí)現(xiàn)網(wǎng)頁信息抓取功能示例【URL與正則模塊】

 更新時(shí)間:2017年05月18日 11:34:16   作者:九日王朝  
這篇文章主要介紹了Python爬蟲實(shí)現(xiàn)網(wǎng)頁信息抓取功能,涉及Python使用URL與正則模塊針對(duì)網(wǎng)頁信息的讀取與匹配相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Python爬蟲實(shí)現(xiàn)網(wǎng)頁信息抓取功能。分享給大家供大家參考,具體如下:

首先實(shí)現(xiàn)關(guān)于網(wǎng)頁解析、讀取等操作我們要用到以下幾個(gè)模塊

import urllib
import urllib2
import re

我們可以嘗試一下用readline方法讀某個(gè)網(wǎng)站,比如說百度

def test():
  f=urllib.urlopen('http://www.baidu.com')
  while True:
   firstLine=f.readline()
   print firstLine

下面我們說一下如何實(shí)現(xiàn)網(wǎng)頁信息的抓取,比如說百度貼吧

我們大概要做幾件事情:

首先獲取網(wǎng)頁及其代碼,這里我們要實(shí)現(xiàn)多頁,即其網(wǎng)址會(huì)改變,我們傳遞一個(gè)頁數(shù)

  def getPage(self,pageNum):
     try:
        url=self.baseURL+self.seeLZ+'&pn='+str(pageNum)
        #創(chuàng)建request對(duì)象
        request=urllib2.Request(url)
        response=urllib2.urlopen(request)
        #print 'URL:'+url
        return response.read()
     except Exception,e:
        print e

之后我們要獲取小說內(nèi)容,這里咱們分為標(biāo)題和正文。標(biāo)題每頁都有,所以我們獲取一次就好了。

我們可以點(diǎn)擊某網(wǎng)站,按f12查看他的標(biāo)題標(biāo)簽是如何構(gòu)造的,比如說百度貼吧是<title>…………

那我們就匹配reg=re.compile(r'<title>(.*?)。')來抓取這個(gè)信息

標(biāo)題抓取完我們要開始抓去正文了,我們知道正文會(huì)有很多段,所以我們要循環(huán)的去抓取整個(gè)items,這里我們注意

對(duì)于文本的讀寫操作,一定要放在循環(huán)外。同時(shí)加入一些去除超鏈接、<br>等機(jī)制

最后,我們?cè)谥骱瘮?shù)調(diào)用即可

完整代碼:

# -*- coding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf8')
#爬蟲之網(wǎng)頁信息抓取
#需要的函數(shù)方法:urllib,re,urllib2
import urllib
import urllib2
import re
#測(cè)試函數(shù)->讀取
#def test():
#   f=urllib.urlopen('http://www.baidu.com')
#   while True:
#     firstLine=f.readline()
#     print firstLine
#針對(duì)于百度貼吧獲取前十頁樓主小說文本內(nèi)容
class BDTB:
   def __init__(self,baseUrl,seeLZ):
     #成員變量
     self.baseURL=baseUrl
     self.seeLZ='?see_lz='+str(seeLZ)
   #獲取該頁帖子的代碼
   def getPage(self,pageNum):
     try:
        url=self.baseURL+self.seeLZ+'&pn='+str(pageNum)
        #創(chuàng)建request對(duì)象
        request=urllib2.Request(url)
        response=urllib2.urlopen(request)
        #print 'URL:'+url
        return response.read()
     except Exception,e:
        print e
   #匹配標(biāo)題
   def Title(self):
     html=self.getPage(1)
     #compile提高正則匹配效率
     reg=re.compile(r'<title>(.*?)。')
     #返回list列表
     items=re.findall(reg,html)
     f=open('output.txt','w+')
     item=('').join(items)
     f.write('\t\t\t\t\t'+item.encode('gbk'))
     f.close()
   #匹配正文
   def Text(self,pageNum):
     html=self.getPage(pageNum)
     #compile提高正則匹配效率
     reg=re.compile(r'"d_post_content j_d_post_content ">(.*?)</div>')
     #返回list列表
     items=re.findall(reg,html)
     f=open('output.txt','a+')
     #[1:]切片,第一個(gè)元素不需要,去掉。
     for i in items[1:]:
        #超鏈接去除
        removeAddr=re.compile('<a.*?>|</a>')
        #用""替換
        i=re.sub(removeAddr,"",i)
        #<br>去除
        i=i.replace('<br>','')
        f.write('\n\n'+i.encode('gbk'))
     f.close()
#調(diào)用入口
baseURL='http://tieba.baidu.com/p/4638659116'
bdtb=BDTB(baseURL,1)
print '爬蟲正在啟動(dòng)....'.encode('gbk')
#多頁
bdtb.Title()
print '抓取標(biāo)題完畢!'.encode('gbk')
for i in range(1,11):
  print '正在抓取第%02d頁'.encode('gbk')%i
  bdtb.Text(i)
print '抓取正文完畢!'.encode('gbk')

PS:這里再為大家提供2款非常方便的正則表達(dá)式工具供大家參考使用:

JavaScript正則表達(dá)式在線測(cè)試工具:
http://tools.jb51.net/regex/javascript

正則表達(dá)式在線生成工具:
http://tools.jb51.net/regex/create_reg

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python正則表達(dá)式用法總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Python中的函數(shù)參數(shù)傳遞問題

    Python中的函數(shù)參數(shù)傳遞問題

    這篇文章主要介紹了Python中的函數(shù)參數(shù)傳遞問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 使用python實(shí)現(xiàn)下載我們想聽的歌曲,速度超快

    使用python實(shí)現(xiàn)下載我們想聽的歌曲,速度超快

    這篇文章主要介紹了使用python實(shí)現(xiàn)下載我們想聽的歌曲,速度超快,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 在Python中使用Mako模版庫的簡(jiǎn)單教程

    在Python中使用Mako模版庫的簡(jiǎn)單教程

    這篇文章主要介紹了在Python中使用Mako模版庫的簡(jiǎn)單教程,包括在Django或者Tornado框架中集成Mako的方法,需要的朋友可以參考下
    2015-04-04
  • Python入門

    Python入門

    Python入門...
    2007-02-02
  • 解決csv.writer寫入文件有多余的空行問題

    解決csv.writer寫入文件有多余的空行問題

    今天小編就為大家分享一篇解決csv.writer寫入文件有多余的空行問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • python如何去除圖像中的框

    python如何去除圖像中的框

    最近在做圖像標(biāo)注,會(huì)出現(xiàn)帶框的圖片,需要去除其中的邊框,本文通過實(shí)例代碼給大家介紹python如何去除圖像中的框,感興趣的朋友跟隨小編一起看看吧
    2023-11-11
  • Playwright如何自定義瀏覽器的下載和啟動(dòng)路徑

    Playwright如何自定義瀏覽器的下載和啟動(dòng)路徑

    playwright是一個(gè)非常有趣的自動(dòng)化測(cè)試工具, 支持Node.js、Python、C# 和 Java語言,下面我們就來看看如何使用Playwright進(jìn)行自定義瀏覽器的下載和啟動(dòng)路徑吧
    2025-04-04
  • Python項(xiàng)目打包成exe文件

    Python項(xiàng)目打包成exe文件

    大家好,本篇文章主要講的是Python項(xiàng)目打包成exe文件,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Python面向?qū)ο笾接袑傩院退接蟹椒☉?yīng)用案例分析

    Python面向?qū)ο笾接袑傩院退接蟹椒☉?yīng)用案例分析

    這篇文章主要介紹了Python面向?qū)ο笾接袑傩院退接蟹椒?結(jié)合具體案例形式簡(jiǎn)單分析了面向?qū)ο蟪绦蛟O(shè)計(jì)中私有屬性與私有方法的基本功能與使用注意事項(xiàng),需要的朋友可以參考下
    2019-12-12
  • python批量telnet檢測(cè)IP地址的端口是否開放

    python批量telnet檢測(cè)IP地址的端口是否開放

    本文主要介紹了python批量telnet檢測(cè)IP地址的端口是否開放,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評(píng)論

库伦旗| 广灵县| 万载县| 荆门市| 遂昌县| 玉溪市| 巢湖市| 台前县| 灌阳县| 陇西县| 九江县| 兴仁县| 张家川| 古交市| 宜兰县| 陕西省| 巴青县| 万山特区| 利辛县| 大丰市| 冀州市| 大宁县| 昔阳县| 彰化市| 楚雄市| 井研县| 南丰县| 寿阳县| 博爱县| 新平| 垦利县| 太仓市| 水富县| 马鞍山市| 牙克石市| 万荣县| 桐城市| 太谷县| 鄱阳县| 西林县| 斗六市|