導航:首頁 > 編程語言 > python抓取表單數據

python抓取表單數據

發布時間:2022-04-20 04:29:30

1. python提取excel表中的數據兩列

1、首先打開excel表格,在單元格中輸入兩列數據,需要將這兩列數據進行比對相同數據。

2、然後在C1單元格中輸入公式:=VLOOKUP(B1,A:A,1,0),意思是比對B1單元格中A列中是否有相同數據。

3、點擊回車,即可將公式的計算結果顯示出來,可以看到C1中顯示的是B1在A列中找到的相同數據。

4、將公式向下填充,即可發現C列中顯示出的數字即為有相同數據的,顯示「#N/A」的為沒有找到匹配數據的。

5、將C1-C4中的數據進行復制並粘貼成數值,即可完成相同數據的提取操作。
在實際研究中,我們經常需要獲取大量數據,而這些數據很大一部分以pdf表格的形式呈現,如公司年報、發行上市公告等。面對如此多的數據表格,採用手工復制黏貼的方式顯然並不可取。那麼如何才能高效提取出pdf文件中的表格數據呢?

Python提供了許多可用於pdf表格識別的庫,如camelot、tabula、pdfplumber等。綜合來看,pdfplumber庫的性能較佳,能提取出完整、且相對規范的表格。因此,本推文也主要介紹pdfplumber庫在pdf表格提取中的作用。

作為一個強大的pdf文件解析工具,pdfplumber庫可迅速將pdf文檔轉換為易於處理的txt文檔,並輸出pdf文檔的字元、頁面、頁碼等信息,還可進行頁面可視化操作。使用pdfplumber庫前需先安裝,即在cmd命令行中輸入:

pip install pdfplumber

pdfplumber庫提供了兩種pdf表格提取函數,分別為.extract_tables( )及.extract_table( ),兩種函數提取結果存在差異。為進行演示,我們網站上下載了一份短期融資券主體信用評級報告,為pdf格式。任意選取某一表格,其界面如下:

接下來,我們簡要分析兩種提取模式下的結果差異。

(1).extract_tables( )

可輸出頁面中所有表格,並返回一個嵌套列表,其結構層次為table→row→cell。此時,頁面上的整個表格被放入一個大列表中,原表格中的各行組成該大列表中的各個子列表。若需輸出單個外層列表元素,得到的便是由原表格同一行元素構成的列表。例如,我們執行如下程序:

輸出結果:

(2).extract_table( )

返回多個獨立列表,其結構層次為row→cell。若頁面中存在多個行數相同的表格,則默認輸出頂部表格;否則,僅輸出行數最多的一個表格。此時,表格的每一行都作為一個單獨的列表,列表中每個元素即為原表格的各個單元格內容。若需輸出某個元素,得到的便是具體的數值或字元串。如下:

輸出結果:

在此基礎上,我們詳細介紹如何從pdf文件中提取表格數據。其中一種思路便是將提取出的列表視為一個字元串,結合Python的正則表達式re模塊進行字元串處理後,將其保存為以標准英文逗號分隔、可被Excel識別的csv格式文件,即進行如下操作:

輸出結果:

盡管能獲得完整的表格數據,但這種方法相對不易理解,且在處理結構不規則的表格時容易出錯。由於通過pdfplumber庫提取出的表格數據為整齊的列表結構,且含有數字、字元串等數據類型。因此,我們可調用pandas庫下的DataFrame( )函數,將列表轉換為可直接輸出至Excel的DataFrame數據結構。DataFrame的基本構造函數如下:

DataFrame([data,index, columns])

三個參數data、index和columns分別代表創建對象、行索引和列索引。DataFrame類型可由二維ndarray對象、列表、字典、元組等創建。本推文中的data即指整個pdf表格,提取程序如下:

其中,table[1:]表示選定整個表格進行DataFrame對象創建,columns=table[0]表示將表格第一行元素作為列變數名,且不創建行索引。輸出Excel表格如下:

通過以上簡單程序,我們便提取出了完整的pdf表格。但需注意的是,面對不規則的表格數據提取,創建DataFrame對象的方法依然可能出錯,在實際操作中還需進行核對。

關於我們

微信公眾號「爬蟲俱樂部」分享實用的stata命令,歡迎轉載、打賞。爬蟲俱樂部是由李春濤教授領導下的研究生及本科生組成的大數據分析和數據挖掘團隊。

投稿要求:

1)必須原創,禁止抄襲;

2)必須准確,詳細,有例子,有截圖;

2. 怎麼使用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()方法返回第一個符合條件的節點

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

3. python怎麼提取excle表格數據

通過實例來說明,在Excle表格中有數據和文字結合的內容
把Excle表格中的數據,復制——粘貼到word中。
按下ctrl+F鍵,打開「查找和替換」對話框。點擊「替換」標簽,在其高級功能下選擇「使用通配符」
然後在查找的內容的位置輸入:[0-9],替換位置:是空值,不輸入任何數據。點擊」全部替換「按鈕。
點擊"全部替換",數據中所有的數字全部刪除掉了。

那麼,如何提取Excle數據中的非數字部分?也是通過「使用通配符」來實現。
把原來的數據復制到word文檔中去,按下ctrl+F鍵,打開「查找和替換」對話框。點擊「替換」標簽,在其高級功能下選擇「使用通配符」,和上述的步驟一樣。
在查找的內容的位置輸入:[!0-9],替換位置:是空值,不輸入任何數據。點擊」全部替換「按鈕。

這樣,數據中所有的非數字數字全部刪除掉了。

這里,介紹一下數據中包含 字元和數字的情況,這里不需要使用通配符功能,也可以通過一種更便捷的方法來實現。(只剩下數字部分的實現方法)
例如,有寫好的數據,如圖所示:

同樣的操作步驟,把原來的數據復制到word文檔中去。

按下ctrl+F鍵,打開「查找和替換」對話框。點擊「替換」標簽。這里不需要使用通配符功能。
在查找的內容的位置輸入:^$,替換位置:是空值,不輸入任何數據。點擊」全部替換「按鈕。

只剩下數字部分的實現方法。

4. 用python flask製作的網頁上傳到伺服器後python如何獲取網上用戶提交的form表單信息

from flask import request
request.args 是get方法的form內容
request.form 是post方法的form內容

5. 求教如何通過python抓取網頁中表格信息

看你抓的是靜態還是動態的了,這里是靜態表格信息的代碼:


importurllib2
importre
importstring

defearse(strline,ch):
left=0
right=strline.find(ch)

whileright!=-1:
strline=strline.replace(ch,'')
right=strline.find(ch)
returnstrline

url=r"http://www.bjsta.com"

resContent=urllib2.urlopen(url).read()

resContent=resContent.decode('gb18030').encode('utf8')

soup=BeautifulSoup(resContent)

printsoup('title')[0].string

tab=soup.findAll('table')

trs=tab[len(tab)-1].findAll('tr')

fortrIterintrs:
tds=trIter.findAll('td')
fortdIterintds:
span=tdIter('span')
foriinrange(len(span)):
ifspan[i].string:
printearse(span[i].string,'').strip(),
else:
pass
print

6. 怎麼用python讀取excel表格的數據

一、讀excel表
讀excel要用到xlrd模塊,官網安裝(http://pypi.python.org/pypi/xlrd)。然後就可以跟著裡面的例子稍微試一下就知道怎麼用了。大概的流程是這樣的:
1、導入模塊

復制代碼代碼如下:
import xlrd
2、打開Excel文件讀取數據

復制代碼代碼如下:
data = xlrd.open_workbook('excel.xls')
3、獲取一個工作表
① table = data.sheets()[0] #通過索引順序獲取
② table = data.sheet_by_index(0) #通過索引順序獲取
③ table = data.sheet_by_name(u'Sheet1')#通過名稱獲取
4、獲取整行和整列的值(返回數組)

復制代碼代碼如下:
table.row_values(i)
table.col_values(i)

5、獲取行數和列數

復制代碼代碼如下:
table.nrows
table.ncols

6、獲取單元格

復制代碼代碼如下:
table.cell(0,0).value
table.cell(2,3).value

就我自己使用的時候覺得還是獲取cell最有用,這就相當於是給了你一個二維數組,餘下你就可以想怎麼干就怎麼幹了。得益於這個十分好用的庫代碼很是簡潔。但是還是有若干坑的存在導致話了一定時間探索。現在列出來供後人參考吧:
1、首先就是我的統計是根據姓名統計各個表中的信息的,但是調試發現不同的表中各個名字貌似不能夠匹配,開始懷疑過編碼問題,不過後來發現是因為空格。因為在excel中輸入的時候很可能會順手在一些名字後面加上幾個空格或是tab鍵,這樣看起來沒什麼差別,但是程序處理的時候這就是兩個完全不同的串了。我的解決方法是給每個獲取的字元串都加上strip()處理一下。效果良好
2、還是字元串的匹配,在判斷某個單元格中的字元串(中文)是否等於我所給出的的時候發現無法匹配,並且各種unicode也不太奏效,網路過一些解決方案,但是都比較復雜或是沒用。最後我採用了一個比較變通的方式:直接從excel中獲取我想要的值再進行比較,效果是不錯就是通用行不太好,個呢不能問題還沒解決。
二、寫excel表
寫excel表要用到xlwt模塊,官網下載(http://pypi.python.org/pypi/xlwt)。大致使用流程如下:
1、導入模塊

復制代碼代碼如下:
import xlwt

2、創建workbook(其實就是excel,後來保存一下就行)

復制代碼代碼如下:
workbook = xlwt.Workbook(encoding = 'ascii')

3、創建表

復制代碼代碼如下:
worksheet = workbook.add_sheet('My Worksheet')

4、往單元格內寫入內容

復制代碼代碼如下:
worksheet.write(0, 0, label = 'Row 0, Column 0 Value')

5、保存

復制代碼代碼如下:
workbook.save('Excel_Workbook.xls')

由於我的需求比較簡單,所以這上面沒遇到什麼問題,唯一的就是建議還是用ascii編碼,不然可能會有一些詭異的現象。
當然xlwt功能遠遠不止這些,他甚至可以設置各種樣式之類的。附上一點例子

復制代碼代碼如下:

Examples Generating Excel Documents Using Python's xlwt
Here are some simple examples using Python's xlwt library to dynamically generate Excel documents.
Please note a useful alternative may be ezodf, which allows you to generate ODS (Open Document Spreadsheet) files for LibreOffice / OpenOffice. You can check them out at:http://packages.python.org/ezodf/index.html
The Simplest Example
import xlwt
workbook = xlwt.Workbook(encoding = 'ascii')
worksheet = workbook.add_sheet('My Worksheet')
worksheet.write(0, 0, label = 'Row 0, Column 0 Value')
workbook.save('Excel_Workbook.xls')
Formatting the Contents of a Cell
import xlwt
workbook = xlwt.Workbook(encoding = 'ascii')
worksheet = workbook.add_sheet('My Worksheet')
font = xlwt.Font() # Create the Font
font.name = 'Times New Roman'
font.bold = True
font.underline = True
font.italic = True
style = xlwt.XFStyle() # Create the Style
style.font = font # Apply the Font to the Style
worksheet.write(0, 0, label = 'Unformatted value')
worksheet.write(1, 0, label = 'Formatted value', style) # Apply the Style to the Cell
workbook.save('Excel_Workbook.xls')
Attributes of the Font Object
font.bold = True # May be: True, False
font.italic = True # May be: True, False
font.struck_out = True # May be: True, False
font.underline = xlwt.Font.UNDERLINE_SINGLE # May be: UNDERLINE_NONE, UNDERLINE_SINGLE, UNDERLINE_SINGLE_ACC, UNDERLINE_DOUBLE, UNDERLINE_DOUBLE_ACC
font.escapement = xlwt.Font.ESCAPEMENT_SUPERSCRIPT # May be: ESCAPEMENT_NONE, ESCAPEMENT_SUPERSCRIPT, ESCAPEMENT_SUBSCRIPT
font.family = xlwt.Font.FAMILY_ROMAN # May be: FAMILY_NONE, FAMILY_ROMAN, FAMILY_SWISS, FAMILY_MODERN, FAMILY_SCRIPT, FAMILY_DECORATIVE
font.charset = xlwt.Font.CHARSET_ANSI_LATIN # May be: CHARSET_ANSI_LATIN, CHARSET_SYS_DEFAULT, CHARSET_SYMBOL, CHARSET_APPLE_ROMAN, CHARSET_ANSI_JAP_SHIFT_JIS, CHARSET_ANSI_KOR_HANGUL, CHARSET_ANSI_KOR_JOHAB, CHARSET_ANSI_CHINESE_GBK, CHARSET_ANSI_CHINESE_BIG5, CHARSET_ANSI_GREEK, CHARSET_ANSI_TURKISH, CHARSET_ANSI_VIETNAMESE, CHARSET_ANSI_HEBREW, CHARSET_ANSI_ARABIC, CHARSET_ANSI_BALTIC, CHARSET_ANSI_CYRILLIC, CHARSET_ANSI_THAI, CHARSET_ANSI_LATIN_II, CHARSET_OEM_LATIN_I
font.colour_index = ?
font.get_biff_record = ?
font.height = 0x00C8 # C8 in Hex (in decimal) = 10 points in height.
font.name = ?
font.outline = ?
font.shadow = ?
Setting the Width of a Cell
import xltw
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
worksheet.write(0, 0, 'My Cell Contents')
worksheet.col(0).width = 3333 # 3333 = 1" (one inch).
workbook.save('Excel_Workbook.xls')
Entering a Date into a Cell
import xlwt
import datetime
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
style = xlwt.XFStyle()
style.num_format_str = 'M/D/YY' # Other options: D-MMM-YY, D-MMM, MMM-YY, h:mm, h:mm:ss, h:mm, h:mm:ss, M/D/YY h:mm, mm:ss, [h]:mm:ss, mm:ss.0
worksheet.write(0, 0, datetime.datetime.now(), style)
workbook.save('Excel_Workbook.xls')
Adding a Formula to a Cell
import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
worksheet.write(0, 0, 5) # Outputs 5
worksheet.write(0, 1, 2) # Outputs 2
worksheet.write(1, 0, xlwt.Formula('A1*B1')) # Should output "10" (A1[5] * A2[2])
worksheet.write(1, 1, xlwt.Formula('SUM(A1,B1)')) # Should output "7" (A1[5] + A2[2])
workbook.save('Excel_Workbook.xls')
Adding a Hyperlink to a Cell
import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
worksheet.write(0, 0, xlwt.Formula('HYPERLINK("http://www.google.com";"Google")')) # Outputs the text "Google" linking to http://www.google.com
workbook.save('Excel_Workbook.xls')
Merging Columns and Rows
import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
worksheet.write_merge(0, 0, 0, 3, 'First Merge') # Merges row 0's columns 0 through 3.
font = xlwt.Font() # Create Font
font.bold = True # Set font to Bold
style = xlwt.XFStyle() # Create Style
style.font = font # Add Bold Font to Style
worksheet.write_merge(1, 2, 0, 3, 'Second Merge', style) # Merges row 1 through 2's columns 0 through 3.
workbook.save('Excel_Workbook.xls')
Setting the Alignment for the Contents of a Cell
import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
alignment = xlwt.Alignment() # Create Alignment
alignment.horz = xlwt.Alignment.HORZ_CENTER # May be: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED
alignment.vert = xlwt.Alignment.VERT_CENTER # May be: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED
style = xlwt.XFStyle() # Create Style
style.alignment = alignment # Add Alignment to Style
worksheet.write(0, 0, 'Cell Contents', style)
workbook.save('Excel_Workbook.xls')
Adding Borders to a Cell
# Please note: While I was able to find these constants within the source code, on my system (using LibreOffice,) I was only presented with a solid line, varying from thin to thick; no dotted or dashed lines.
import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
borders = xlwt.Borders() # Create Borders
borders.left = xlwt.Borders.DASHED # May be: NO_LINE, THIN, MEDIUM, DASHED, DOTTED, THICK, DOUBLE, HAIR, MEDIUM_DASHED, THIN_DASH_DOTTED, MEDIUM_DASH_DOTTED, THIN_DASH_DOT_DOTTED, MEDIUM_DASH_DOT_DOTTED, SLANTED_MEDIUM_DASH_DOTTED, or 0x00 through 0x0D.
borders.right = xlwt.Borders.DASHED
borders.top = xlwt.Borders.DASHED
borders.bottom = xlwt.Borders.DASHED
borders.left_colour = 0x40
borders.right_colour = 0x40
borders.top_colour = 0x40
borders.bottom_colour = 0x40
style = xlwt.XFStyle() # Create Style
style.borders = borders # Add Borders to Style
worksheet.write(0, 0, 'Cell Contents', style)
workbook.save('Excel_Workbook.xls')
Setting the Background Color of a Cell
import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
pattern = xlwt.Pattern() # Create the Pattern
pattern.pattern = xlwt.Pattern.SOLID_PATTERN # May be: NO_PATTERN, SOLID_PATTERN, or 0x00 through 0x12
pattern.pattern_fore_colour = 5 # May be: 8 through 63. 0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan, 16 = Maroon, 17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow , almost brown), 20 = Dark Magenta, 21 = Teal, 22 = Light Gray, 23 = Dark Gray, the list goes on...
style = xlwt.XFStyle() # Create the Pattern
style.pattern = pattern # Add Pattern to Style
worksheet.write(0, 0, 'Cell Contents', style)
workbook.save('Excel_Workbook.xls')
TODO: Things Left to Document
- Panes -- separate views which are always in view
- Border Colors (documented above, but not taking effect as it should)
- Border Widths (document above, but not working as expected)
- Protection
- Row Styles
- Zoom / Manification
- WS Props?
Source Code for reference available at: https://secure.simplistix.co.uk/svn/xlwt/trunk/xlwt/

7. 不用web框架,怎麼通過python獲取網頁表單提交的數據,並傳入資料庫啊,求大佬們幫幫忙

你想自己實現 wsgi 還是使用 wigiref 模塊?你需要了解wsgi 基礎,所有表單數據 可以通過 wsgi 的入口函數中的參數 envrion['wsgi.input'] 獲取到

wsgi參考資料:
https://www.python.org/dev/peps/pep-3333/
https://pep-3333-wsgi.readthedocs.io/en/latest/

8. python 中如何獲取表單數據

使用Python訪問網頁主要有三種方式: urllib, urllib2, httplib urllib比較簡單,功能相對也比較弱,httplib簡單強大,但好像不支持session 1. 最簡單的頁面訪問 res=urllib2.urlopen(url) print res.read() 2. 加上要get或post的數據 data={"na...

9. Python怎麼抓取表格 正則怎麼寫

看了你的正則表達式。思路基本上是正則的。不過有些小問題。我建議你初學的時候分兩步搜索。


先找到所有的tr,再在tr里找td

exp1=re.compile("(?isu)<tr[^>]*>(.*?)</tr>")
exp2=re.compile("(?isu)<td[^>]*>(.*?)</td>")
htmlSource=urllib.urlopen("http://cn-proxy.com/").read()
forrowinexp1.findall(htmlSource):
print'==============='
forcolinexp2.findall(row):
printcol,
print

這里(?isu)意思就是,要搜索時,包含回車換行,包含漢字,包含空格。

你多試試。找一個正則表達式驗證工具,比如kodos。 然後看看python自帶的那個正則表達式教程就可以了。

10. python怎樣從表單中提取數據

form = cgi.FieldStorage()

if not (form.has_key("name") and form.has_key("addr")):

print "<H1>Error</H1>"

print "Please fill in the name and addr fields."

return

print "<p>name:", form["name"].value

print "<p>addr:", form["addr"].value

...further form processing here...

閱讀全文

與python抓取表單數據相關的資料

熱點內容
命令語氣的人什麼心態 瀏覽:435
程序員喜歡留指甲嗎 瀏覽:516
七牛雲伺服器收費標准 瀏覽:627
時光相冊加密空間密碼忘記 瀏覽:474
華為雲為用戶提供的服務雲伺服器 瀏覽:634
minecraftlinux伺服器搭建 瀏覽:376
linux命令新建文件 瀏覽:708
長線pdf 瀏覽:607
程序員電腦支持手寫 瀏覽:414
解壓頭戴式耳機推薦 瀏覽:344
紙條app上怎麼樣看對方主頁 瀏覽:883
編譯英語單詞怎麼寫 瀏覽:249
編譯原理和匯編原理的區別 瀏覽:864
如何給加密的pdf解密 瀏覽:770
華為盒子時間同步伺服器地址 瀏覽:95
python處理excel亂碼 瀏覽:391
mysql的命令行 瀏覽:822
jpeg採用什麼演算法 瀏覽:701
程序員紅軸薄膜 瀏覽:306
洗臉盆壓縮 瀏覽:780