1. 程式人生 > >python 解析html中的link

python 解析html中的link

htmllib.HTMLParser

#!/usr/bin/env python
import cStringIO
import formatter
from htmllib import HTMLParser
import urllib

url = "http://blog.csdn.net/Lyq3413/article/details/76577465"
user_name = "proxy_account"
passwd = "proxy_pwd"
proxy_base = "proxy.example.net:8080"
proxy = "http://%s:%[email protected]%s"
% (user_name, passwd, proxy_base) proxies = {"http": proxy, "https": proxy} f = urllib.urlopen(url, proxies=proxies) #需要代理 #f = urllib.urlopen(url) #不需要代理可以直接這麼寫 data = f.read() f.close() parser = HTMLParser(formatter.AbstractFormatter( formatter.DumbWriter(cStringIO.StringIO()))) parser.feed(data) parser.close
() print parser.anchorlist

這段程式碼的工作方式中,最重要的是parser 類不進行I/O,它只處理一個formatter 物件。
Python 只有一個formatter 物件,即formatter.AbstractFormatter,用來解析資料並使用writer
物件來分配其輸出內容。同樣,Python 只有一個有用的writer 物件,即formatter.DumbWriter。
可以為該物件提供一個可選的檔案物件,表示將輸出寫入檔案。如果不提供這個檔案物件,
則會寫入標準輸出,但後者一般不是所期望的。為了不讓輸出寫到標準輸出,先例項化一個
cStringIO 物件。StringIO 物件會吸收掉這些輸出

HTMLParser.HTMLParser

from HTMLParser import HTMLParser
from cStringIO import StringIO
from urllib2 import urlopen
import urllib2
from urlparse import urljoin


url = "http://blog.csdn.net/lyq3413/article/details/76577465"
user_name = "proxy_account"
passwd = "proxy_pwd"
proxy = "http://%s:%[email protected]:8080" % (user_name, passwd)
proxies = {"http": proxy, "https": proxy}
proxy_handler = urllib2.ProxyHandler(proxies)
opener = urllib2.build_opener(proxy_handler)
urllib2.install_opener(opener)
f = urlopen(url)
data = StringIO(f.read())
f.close()

class AnchorParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        if tag != 'a':
            return
        if not hasattr(self, 'data'):
            self.data = []
        for attr in attrs:
            if attr[0] == 'href':
                self.data.append(attr[1])

parser = AnchorParser()
parser.feed(data.read().decode('utf-8'))
for link in parser.data:
    print urljoin(url, link)

BeautifulSoup

BeautifulSoup不是標準庫需要單獨安裝
pip 工具安裝:
$pip install BeautifulSoup

from BeautifulSoup import BeautifulSoup, SoupStrainer

links = BeautifulSoup(data, parseOnlyThese=SoupStrainer('a'))

相關推薦

python 解析htmllink

htmllib.HTMLParser #!/usr/bin/env python import cStringIO import formatter from htmllib import HTMLParser import urllib url = "ht

python 解析html網頁

class find() [] index file 字符 .com 查找 cto pyquery庫是jQuery的Python實現,可以用於解析HTML網頁內容,使用方法: 代碼如下: from pyquery import PyQuery as pq 1、可加載一段H

python解析網頁js動態添加的內容

pytho log hive .cn article gree html .com .html https://www.cnblogs.com/asmblog/archive/2013/05/07/3063809.html https://www.zhihu.com/q

C# 解析html篩選class的問題

help get 是否 sans tags pan key 似的 vertica C# 解析html中篩選class的問題C# html解析 class 類 當我們用C#的.net解析html的時候,當html的元素沒有id,並且沒有過多的屬性供篩選,只能通過class

python解析HTML之:PyQuery庫的介紹與使用

att 用法 hello ext dom 的人 inf 目標 title 本篇大部分轉載於https://www.jianshu.com/p/c07f7cd1b548 先放自已自己解析techweb一個網站圖片的代碼 from pyquery import PyQuery

python解析pdf的文字與表格【pdfplumber的安裝與使用】

我們接觸到的很多文件資料都是以pdf格式存在的,比如:論文,技術文件,標準檔案,書籍等。pdf格式使得用機器從中提取資訊格外困難。 為了解決這個問題,我找到了幾種解決方案,最後選擇了python上的pdfplumber庫,安裝和使用都相對比較方便,效果也還不錯,所以下面介紹這個庫的安裝與使用。 安裝我的電

python處理html的以&#開頭的編碼

亂碼格式類似‘图灵程序设计丛书’ 程式碼為: text='图&#2

Python解析html的幾種操作方式

解析html是爬蟲後的重要的一個處理資料的環節。一下記錄解析html的幾種方式。 先介紹基礎的輔助函式,主要用於獲取html並輸入解析後的結束 #把傳遞解析函式,便於下面的修改 def get_html(url, paraser=bs4_paraser): headers =

Python解析HTML定位元素(內容)HTMLParser demo

前情提要: 手上有個報告HTML,要抓取其中的資料內容。HTML檔案內容較多,相同標籤更多,不能更改。所以,選擇按內容定位,套用迴圈和判斷,將需要的資料放入列表list裡。 程式碼呈現: from HTMLParser import HTMLParser import HTMLParse

python解析網頁javascript動態新增的內容 一

最近,想從中國天氣網上抓取資料,其中的網頁上的實時天氣是使用javascript生成的,用簡單的標籤解析不到。原因是,那個標籤壓根就沒再網頁當中。 所以,google了下python怎麼區解析動態網頁,下面文章對我很有幫助。 因為我只希望在mac下解析,所以我並沒有使用擴

關於利用Jsoup解析HTML ;變成非傳統空格或亂碼問題解決方法

在寫爬蟲的時候很多時候會遇到這種問題:HTML中原始碼顯示 沒問題,但是利用Jsoup的text()方法獲取的文字就會出現問題,一般情況是 變成非傳統空格或者亂碼,這樣在解析的時候想切分字串會無法成功。因為 是ISO-8

python解析URL含有特殊符號的地址

摘要 今天在用curl呼叫一個solr地址查詢資料的時候報錯,發現是因為URL地址中含有[ 中括號 導致的,既然shell的curl命令不行,想著Python的urllib包可以解析URL地址,

Java使用Jsoup解析Html標籤,新增屬性。

設定Html中標籤屬性的值 問題 為java生成的html檔案mate標籤新增屬性charset=”utf-8”。 方法 可以使用屬性設定方法 Element.attr(String key, String value), 和 Elements.at

python解析html提取資料,並生成word文件

今天試著用ptyhon做了一個抓取網頁內容,並生成word文件的功能,功能很簡單,做一下記錄以備以後用到。 生成word用到了第三方元件python-docx,所以先進行第三方元件的安裝。由於windows下安裝的python預設不帶setuptools這個模組,所以要先安

關於HTMLlink元素的onload屬性總結

    我們知道,HTML為了載入一個外部的css檔案,經常會用到一個link的元素,具體的用法如下:     <link rel="stylesheet" rev="stylesheet" href="xxx.css" type="text/css" media="s

python解析html

       python中,有三個庫可以解析html文字,HTMLParser,sgmllib,htmllib。他們的實現方法不通,但功能差不多。這三個庫中提供解析html的類都是基類,本身並不做具體的工作。他們在發現的元件後(如標籤、註釋、聲名等),會呼叫相應的函式,這些

htmllink的用法

概述 link標籤,當在文件中宣告使用外接資源(比如CSS)時使用此標籤 link標籤是單獨出現的屬性 href -- 指定需要載入的資源(CSS檔案)的地址URI media -- 媒體型別rel

解析html連結url,並下載在指定目錄

<?php $imgurls = array(); $imgurls = self::getImgs($value['content']); if(is_array($imgurls)){ foreach($imgurls as $imgurl) {

python 解析html網址內容

首先,找到你希望獲取資料的URL, 利用urllib.request將其開啟,然後利用lxml解析得到的資料流: from lx

Python利用xpath解析HTML

1 import codecs 2 from lxml import etree 3 f=codecs.open("ceshi.html","r","utf-8") 4 content=f.read() 5 f.close() 6 tree=etree.HTML(content) etree提供了HTM