python獲取網(wǎng)頁標題(python獲取網(wǎng)頁內(nèi)容)
今天給各位分享python獲取網(wǎng)頁標題的知識,其中也會對python獲取網(wǎng)頁內(nèi)容進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!
本文目錄一覽:
- 1、python怎么抓取網(wǎng)頁中DIV的文字
- 2、Python提取網(wǎng)頁鏈接和標題
- 3、誰用過python中的re來抓取網(wǎng)頁,能否給個例子,謝謝
- 4、如何用python抓取這個網(wǎng)頁的內(nèi)容?
- 5、python如何正確抓取網(wǎng)頁標題
- 6、請教網(wǎng)頁里的特定數(shù)據(jù)怎么抓取?
python怎么抓取網(wǎng)頁中DIV的文字
1、編寫爬蟲思路:
確定下載目標,找到網(wǎng)頁,找到網(wǎng)頁中需要的內(nèi)容。對數(shù)據(jù)進行處理。保存數(shù)據(jù)。
2、知識點說明:
1)確定網(wǎng)絡(luò)中需要的信息,打開網(wǎng)頁后使用F12打開開發(fā)者模式。
在Network中可以看到很多信息,我們在頁面上看到的文字信息都保存在一個html文件中。點擊文件后可以看到response,文字信息都包含在response中。
對于需要輸入的信息,可以使用ctrl+f,進行搜索。查看信息前后包含哪些特定字段段啟。
對于超鏈接的提取,可以使用最左邊的箭頭點擊超鏈接,這時Elements會打開升虧有該條超鏈接的信息,從中判斷需要吵燃神提取的信息。從下載小說來看,在目錄頁提取出小說的鏈接和章節(jié)名。
2)注意編碼格式
輸入字符集一定要設(shè)置成utf-8。頁面大多為GBK字符集。不設(shè)置會亂碼。
Python提取網(wǎng)頁鏈接和標題
方法1:BS版
簡單寫了個,只是爬鏈接的,加上標題老報錯,暫時沒看出來原因,先給你粘上來吧(方法2無彎沖御問題)
from
BeautifulSoup
import
BeautifulSoup
import
urllib2
import
re
def
grabHref(url,localfile):
html
=
urllib2.urlopen(url).read()
html
=
unicode(html,'gb2312','ignore').encode('utf-8'判州,'ignore')
content
=
BeautifulSoup(html).findAll('a')
myfile
=
open(localfile,'w')
pat
=
re.compile(r'href="([^"]*)"')
pat2
=
re.compile(r'/tools/')
for
item
in
content:
h
=
pat.search(str(item))
href
=
h.group(1)
if
pat2.search(href):
#
s
=
BeautifulSoup(item)
#
myfile.write(s.a.string)
#
myfile.write('\r\n')
myfile.write(href)
myfile.write('\r\n')
#
s.a.sting
href
myfile.close()
def
main():
url
=
""
localfile
=
'aHref.txt'
grabHref(url,localfile)
if
__name__=="__main__":
main()
方法2:Re版
由于方法1有問題,埋巖只能獲取到下載頁面鏈接,所以換用Re解決,代碼如下:
import
urllib2
import
re
url
=
''
find_re
=
re.compile(r'href="([^"]*)".+?(.+?)/a')
pat2
=
re.compile(r'/tools/')
html
=
urllib2.urlopen(url).read()
html
=
unicode(html,'utf-8','ignore').encode('gb2312','ignore')
myfile
=
open('aHref.txt','w')
for
x
in
find_re.findall(html):
if
pat2.search(str(x)):
myfile,x[0],x[1]
myfile.close()
'Done!'
誰用過python中的re來抓取網(wǎng)頁,能否給個例子,謝謝
這是虛橋我寫的一個非常簡單的抓取頁面鎮(zhèn)譽含的腳本,作用為獲得指定URL的所有鏈接地址并獲取所有鏈接的標題。
===========geturls.py================
#coding:utf-8
import urllib
import urlparse
import re
import socket
import threading
#定義鏈接正則御笑
urlre = re.compile(r"href=[\"']?([^ \"']+)")
titlere = re.compile(r"title(.*?)/title",re.I)
#設(shè)置超時時間為10秒
timeout = 10
socket.setdefaulttimeout(timeout)
#定義最高線程數(shù)
max = 10
#定義當前線程數(shù)
current = 0
def gettitle(url):
global current
try:
content = urllib.urlopen(url).read()
except:
current -= 1
return
if titlere.search(content):
title = titlere.search(content).group(1)
try:
title = title.decode('gbk').encode('utf-8')
except:
title = title
else:
title = "無標題"
print "%s: %s" % (url,title)
current -= 1
return
def geturls(url):
global current,max
ts = []
content = urllib.urlopen(url)
#使用set去重
result = set()
for eachline in content:
if urlre.findall(eachline):
temp = urlre.findall(eachline)
for x in temp:
#如果為站內(nèi)鏈接,前面加上url
if not x.startswith("http:"):
x = urlparse.urljoin(url,x)
#不記錄js和css文件
if not x.endswith(".js") and not x.endswith(".css"):
result.add(x)
threads = []
for url in result:
t = threading.Thread(target=gettitle,args=(url,))
threads.append(t)
i = 0
while i len(threads):
if current max:
threads[i].start()
i += 1
current += 1
else:
pass
geturls("")
使用正則表達式(re)只能做到一些比較簡單或者機械的功能,如果需要更強大的網(wǎng)頁分析功能,請嘗試一下beautiful soup或者pyquery,希望能幫到你
如何用python抓取這個網(wǎng)頁的內(nèi)容?
Python實現(xiàn)常規(guī)的靜態(tài)網(wǎng)頁抓取時,往往是用urllib2來獲取整個HTML頁面,然后從HTML文件中逐字查找對應(yīng)的關(guān)鍵字。如下所示:
復(fù)制代碼代碼如歷罩下:
import urllib2
url="網(wǎng)址"
up=urllib2.urlopen(url)#打開目標頁面,存入變量up
cont=up.read()#從up中讀入該HTML文件
key1='肢握鬧a href="http'#設(shè)置關(guān)鍵字1
key2="target"#設(shè)置關(guān)鍵字2
pa=cont.find(key1)#找出關(guān)鍵字1的位置
pt=cont.find(key2,pa)#找出關(guān)鍵字2的位置(從字1后皮裂面開始查找)
urlx=cont[pa:pt]#得到關(guān)鍵字1與關(guān)鍵字2之間的內(nèi)容(即想要的數(shù)據(jù))
print urlx
python如何正確抓取網(wǎng)頁標題
import beautifulsoup
import urllib2
def main():
userMainUrl = "你要橘豎抓取的地毀伍扮址"
req = urllib2.Request(userMainUrl)
resp = urllib2.urlopen(req)
respHtml = resp.read()
foundLabel = respHtml.findAll("label")
finalL =foundLabel.string
print "纖灶biaoti=",finalL
if __name__=="__main__":
main();