python 爬蟲實現網頁資訊抓取

2021-07-24 21:02:32 字數 2794 閱讀 9148

首先實現關於網頁解析、讀取等操作我們要用到以下幾個模組

import urllib

import urllib2

import re

def test():

f=urllib.urlopen('')

while true:

firstline=f.readline()

print firstline

我們大概要做幾件事情:

首先獲取網頁及其**,這裡我們要實現多頁,即其**會改變,我們傳遞乙個頁數

def getpage(self,pagenum):

try:

url=self.baseurl+self.seelz+'&pn='+str(pagenum)

#建立request物件

request=urllib2.request(url)

response=urllib2.urlopen(request)

#print 'url:'+url

return response.read()

except exception,e:

print e

之後我們要獲取**內容,這裡咱們分為標題和正文。標題每頁都有,所以我們獲取一次就好了。

那我們就匹配reg=re.compile(r'(.*?)。')來抓取這個資訊

標題抓取完我們要開始抓去正文了,我們知道正文會有很多段,所以我們要迴圈的去抓取整個items,這裡我們注意

對於文字的讀寫操作,一定要放在迴圈外。同時加入一些去除超連結、

等機制最後,我們在主函式呼叫即可

完整**:

# -*- coding:utf-8 -*-

import sys

reload(sys)

sys.setdefaultencoding('utf8')

#爬蟲之網頁資訊抓取

#需要的函式方法:urllib,re,urllib2

import urllib

import urllib2

import re

#測試函式->讀取

#def test():

# f=urllib.urlopen('')

# while true:

# firstline=f.readline()

# print firstline

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)

#建立request物件

request=urllib2.request(url)

response=urllib2.urlopen(request)

#print 'url:'+url

return response.read()

except exception,e:

print e

#匹配標題

def title(self):

html=self.getpage(1)

#compile提高正則匹配效率

reg=re.compile(r'(.*?)。')

#返回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 ">(.*?)

') #返回list列表

items=re.findall(reg,html)

f=open('output.txt','a+')

#[1:]切片,第乙個元素不需要,去掉。

for i in items[1:]:

#超連結去除

removeaddr=re.compile('|')

#用""替換

i=re.sub(removeaddr,"",i)

#去除 i=i.replace('

','')

f.write('\n\n'+i.encode('gbk'))

f.close()

#呼叫入口

baseurl=''

bdtb=bdtb(baseurl,1)

print '爬蟲正在啟動....'.encode('gbk')

#多頁bdtb.title()

print '抓取標題完畢!'.encode('gbk')

for i in range(1,11):

print '正在抓取第%02d頁'.encode('gbk')%i

bdtb.text(i)

print '抓取正文完畢!'.encode('gbk')

Python爬蟲學習,抓取網頁上的天氣資訊

今天學習了使用python編寫爬蟲程式,從中國天氣網爬取杭州的天氣。使用到了urllib庫和bs4。bs4提供了專門針對html的解析功能,比用re方便許多。coding utf 8 import sys reload sys sys.setdefaultencoding utf 8 from bs...

Python爬蟲 解決動態網頁資訊抓取問題

1.嵌入式網頁爬取右鍵開啟原始碼找到iframe標籤,拿出裡面的src位址 進入src位址中的頁面後不要停留在首頁,首頁 通常是比較特殊的,分析不出來規律,需要我們進入首頁外的任一位址 進入第二頁,我們便可以發現頁面中的規律,僅僅只需要更換curpage後的數字就可以切換到不同的頁面,這樣一來,我們...

Python 網頁爬蟲初試

find find all find name attrs recursive string kwargs find all name attrs recursive string kwargs name 引數可以查詢所有名字為 name 的tag,字串物件會被自動忽略掉.keyword 引數 如果...