導航:首頁 > 編程語言 > python怎麼爬取並列標簽

python怎麼爬取並列標簽

發布時間:2022-08-12 22:21:08

㈠ 如何用python爬取出HTML指定標簽內的文本

你好!

可以通過lxml來獲取指定標簽的內容。

#安裝lxml
pipinstalllxml

importrequests
fromlxmlimporthtml

defgetHTMLText(url):
....

etree=html.etree
root=etree.HTML(getHTMLText(url))
#這里得到一個表格內tr的集合
trArr=root.xpath("//div[@class='news-text']/table/tbody/tr");

#循環顯示tr裡面的內容
fortrintrArr:
rank=tr.xpath("./td[1]/text()")[0]
name=tr.xpath("./td[2]/div/text()")[0]
prov=tr.xpath("./td[3]/text()")[0]
strLen=22-len(name.encode('GBK'))+len(name)
print('排名:{:<3},學校名稱:{:<{}} ,省份:{}'.format(rank,name,strLen,prov))

希望對你有幫助!

㈡ 如何用產品id索引爬取標簽內的產品各項標題鏈接價格 python

產品id索引爬取標簽內的產品各項標題鏈接價格 python可以使用網頁請求方式:最常見的方式,一般用於獲取或者查詢資源信息,也是大多數網站使用的方式,響應速度快,或者多以表單形式上傳參數,因此除了查詢信息外,還可以修改信息。

另外可以以開發者的身份進入網站進行價格查詢,打開網頁,用開發者模式,任意復制一條首條新聞標題,粘貼到搜索框里。開發者模式,依次點擊『network』,『XHR』找到翻譯數據,點擊Headers,請求為get方式,使用Beautiful soup解析網頁,然後再安裝bs。

Beautiful soup 指定xlml解析器進行解析,soup=BeautifulSoup(strhtml.text,'lxml'使用select(選擇器)定位數據,使用瀏覽器的開發者模式,將滑鼠停留在對應數據位置並右擊。

開發者界面會有被選中部分,右擊 ---> selector; 將路徑粘貼在文檔中,代碼如下#main > div > div.mtop.firstMod.clearfix > div.centerBox > ul.newsList > li:nth-child(1) > a。

這是選中的第一條路徑,但我們要獲取所有的新聞頭條,因此將:li:nth-child(1)中冒號(包含冒號)後面的刪掉。如下:#main > div > div.mtop.firstMod.clearfix > div.centerBox > ul.newsList > li > a,然後就可以直接查詢了。

㈢ 怎麼使用python來爬取網頁上的表格信息

稍微說一下背景,當時我想研究蛋白質與小分子的復合物在空間三維結構上的一些規律,首先得有數據啊,數據從哪裡來?就是從一個涵蓋所有已經解析三維結構的蛋白質-小分子復合物的資料庫裡面下載。這時候,手動一個個去下顯然是不可取的,我們需要寫個腳本,能從特定的網站選擇性得批量下載需要的信息。python是不錯的選擇。

import urllib #python中用於獲取網站的模塊
import urllib2, cookielib

有些網站訪問時需要cookie的,python處理cookie代碼如下:
cj = cookielib.CookieJar ( )
opener = urllib2.build_opener( urllib2.HttpCookieProcessor(cj) )
urllib2.install_opener (opener)

通常我們需要在網站中搜索得到我們需要的信息,這里分為二種情況:

1. 第一種,直接改變網址就可以得到你想要搜索的頁面:

def GetWebPage( x ): #我們定義一個獲取頁面的函數,x 是用於呈遞你在頁面中搜索的內容的參數
url = 'http://xxxxx/xxx.cgi?&' + 『你想要搜索的參數』 # 結合自己頁面情況適當修改
page = urllib2.urlopen(url)
pageContent = page.read( )
return pageContent #返回的是HTML格式的頁面信息

2.第二種,你需要用到post方法,將你搜索的內容放在postdata裡面,然後返回你需要的頁面

def GetWebPage( x ): #我們定義一個獲取頁面的函數,x 是用於呈遞你在頁面中搜索的內容的參數
url = 'http://xxxxx/xxx' #這個網址是你進入搜索界面的網址
postData = urllib.urlencode( { 各種『post』參數輸入 } ) #這裡面的post參數輸入需要自己去查
req= urllib2.Request (url, postData)
pageContent = urllib2.urlopen (req). read( )
return pageContent #返回的是HTML格式的頁面信息

在獲取了我們需要的網頁信息之後,我們需要從獲得的網頁中進一步獲取我們需要的信息,這里我推薦使用 BeautifulSoup 這個模塊, python自帶的沒有,可以自行網路谷歌下載安裝。 BeautifulSoup 翻譯就是『美味的湯』,你需要做的是從一鍋湯裡面找到你喜歡吃的東西。

import re # 正則表達式,用於匹配字元
from bs4 import BeautifulSoup # 導入BeautifulSoup 模塊

soup = BeautifulSoup(pageContent) #pageContent就是上面我們搜索得到的頁面

soup就是 HTML 中所有的標簽(tag)BeautifulSoup處理格式化後的字元串,一個標準的tag形式為:

hwkobe24

通過一些過濾方法,我們可以從soup中獲取我們需要的信息:

(1) find_all ( name , attrs , recursive , text , **kwargs)
這裡面,我們通過添加對標簽的約束來獲取需要的標簽列表, 比如 soup.find_all ('p') 就是尋找名字為『p』的 標簽,而soup.find_all (class = "tittle") 就是找到所有class屬性為"tittle" 的標簽,以及soup.find_all ( class = re.compile('lass')) 表示 class屬性中包含『lass』的所有標簽,這里用到了正則表達式(可以自己學習一下,非常有用滴)

當我們獲取了所有想要標簽的列表之後,遍歷這個列表,再獲取標簽中你需要的內容,通常我們需要標簽中的文字部分,也就是網頁中顯示出來的文字,代碼如下:

tagList = soup.find_all (class="tittle") #如果標簽比較復雜,可以用多個過濾條件使過濾更加嚴格

for tag in tagList:
print tag.text
f.write ( str(tag.text) ) #將這些信息寫入本地文件中以後使用

(2)find( name , attrs , recursive , text , **kwargs )

它與 find_all( ) 方法唯一的區別是 find_all() 方法的返回結果是值包含一個元素的列表,而 find() 方法直接返回結果

(3)find_parents( ) find_parent( )

find_all() 和 find() 只搜索當前節點的所有子節點,孫子節點等. find_parents() 和 find_parent() 用來搜索當前節點的父輩節點,搜索方法與普通tag的搜索方法相同,搜索文檔搜索文檔包含的內容

(4)find_next_siblings() find_next_sibling()

這2個方法通過 .next_siblings 屬性對當 tag 的所有後面解析的兄弟 tag 節點進代, find_next_siblings() 方法返回所有符合條件的後面的兄弟節點,find_next_sibling() 只返回符合條件的後面的第一個tag節點

(5)find_previous_siblings() find_previous_sibling()

這2個方法通過 .previous_siblings 屬性對當前 tag 的前面解析的兄弟 tag 節點進行迭代, find_previous_siblings()方法返回所有符合條件的前面的兄弟節點, find_previous_sibling() 方法返回第一個符合條件的前面的兄弟節點

(6)find_all_next() find_next()

這2個方法通過 .next_elements 屬性對當前 tag 的之後的 tag 和字元串進行迭代, find_all_next() 方法返回所有符合條件的節點, find_next() 方法返回第一個符合條件的節點

(7)find_all_previous() 和 find_previous()

這2個方法通過 .previous_elements 屬性對當前節點前面的 tag 和字元串進行迭代, find_all_previous() 方法返回所有符合條件的節點, find_previous()方法返回第一個符合條件的節點

具體的使用方法還有很多,用到這里你應該可以解決大部分問題了,如果要更深入了解可以參考官方的使用說明哈!

㈣ python爬蟲怎麼獲取嵌套標簽最外層的文本

re.findall(r'<th class="sorting_disables".*?\n\s*>(".*?")\n',text)

㈤ Python爬蟲怎麼爬取左右沒有標簽的內容

handle_starttag每遇見一個以"<"開始的tag回調一次,handle_endtag每遇見一個"</"標識的結束時回調一次,你的text3和text5位於結束標記之後,因此要自己手動用flag標記下,然後在handle_data里處理對應的數據!

㈥ python,提取HTML中左右沒有標簽的內容,怎麼提取

我一般使用BeautifulSoup,還是比較簡單的

soup=BeaitifulSoup(html,'html.parser')

要找到某各元素使用find_all方法就行

for div in soup.find_all('div'):

但是經常會遇到網站有反爬的設置,比如子結點中含有換行符,只要寫個函數去掉子結點間的換行符就行

㈦ python爬蟲如何提取標簽值

handle_starttag每遇見一個以"<"開始的tag回調一次,handle_endtag每遇見一個"

閱讀全文

與python怎麼爬取並列標簽相關的資料

熱點內容
解壓的密碼htm被屏蔽 瀏覽:502
冬天太冷冰箱壓縮機不啟動怎麼辦 瀏覽:82
手機打開vcf需要什麼編譯器 瀏覽:908
加密磁碟後開機很慢 瀏覽:270
長沙智能雲控系統源碼 瀏覽:256
阿里雲伺服器如何設置操作系統 瀏覽:999
超級命令的英文 瀏覽:782
做賬為什麼要用加密狗 瀏覽:584
考研群體怎麼解壓 瀏覽:156
linux修改命令提示符 瀏覽:225
圓圈裡面k圖標是什麼app 瀏覽:60
pdf加空白頁 瀏覽:945
linux伺服器如何看網卡狀態 瀏覽:317
解壓新奇特視頻 瀏覽:706
圖書信息管理系統java 瀏覽:554
各種直線命令詳解 瀏覽:864
程序員淚奔 瀏覽:147
素材怎麼上傳到伺服器 瀏覽:517
android百度離線地圖開發 瀏覽:191
web可視化編程軟體 瀏覽:294