導航:首頁 > 編程語言 > python爬取表格數據

python爬取表格數據

發布時間:2022-08-24 02:01:14

A. 如何用python爬取靜態表格

問題出在
1、基本的循環沒有搞很清楚,那條語句該放循環裡面,還是外面,提問者沒有搞清楚。
2、出了問題,不會加print 語句調試。

# coding:utf-8

import urllib.request
import bs4 as bs
import re
import string
import csv
import time

csvfile = open('test.csv', 'a')

writer = csv.writer(csvfile)

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

while right != -1:
strline = strline.replace(ch, '')
right = strline.find(ch)
return strline

url = r""

resContent = urllib.request.urlopen(url).read()

soup = bs.BeautifulSoup(resContent, "html.parser")

tab = soup.findAll('table')

tab = tab[2]
tds = tab.findAll('tr')
for trIter in tds:
tdIter = trIter.findAll('td')
templist = []
for item in tdIter:
templist.append(item.string.strip())
print(item.string.strip())
if templist[0:4]:
writer.writerow(
[time.asctime(time.localtime(time.time()))] + templist[0:4])

csvfile.close()

B. 如何爬取網頁表格數據

網頁里的表格數據可以用爬蟲比如python去採集,也可以用採集器去採集網頁上的表格數據會更簡單些。

C. python 爬取的數據導出到excel

把print出來的,都存到一個list里。
all_case=['姓名','張三','年齡','18'...]
b=[]
x=0
y=0
for i in range(0,len(all_case),2):
b = all_case[i:i+2]
for i in b:

ws.write(x,y,i,style)

x+=1
y+=1

x=0

wtbook.save(path_dst)

上面是核心內容,你理解一下。就是將list變為2個元素一組的小list,然後對小list按行寫入,寫完到下一個小list再回到第一行。
寫完發現沒有格式啊。。。注意一下x+=1和裡面for是一組。y+=1和x=0和外面的for是一組。

D. python3.7爬蟲使用xpath解析,獲取的表格數據為什麼不全面

我認為是xpath默認提取xpath第一個tr屬性了,xpath 表達式改成'//div[@class="row"]//table//tr[@height="38px" or @height=""]'

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

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

F. python怎麼爬取數據

根據你要抓取頁面的源碼欄位來進行爬取。根據對應的源碼找到你的需求數據,主要用到requests+BeautifulSoup,其中requests用於請求頁面,BeautifulSoup用於解析頁面。

G. 用python爬取網頁數據

用python爬取網頁數據就三步,用scrapy(爬蟲框架)
1. 定義item類
2. 開發spider類
3. 開發pipeline
如果有不會的,可以看一看《瘋狂python講義》

H. python爬取到數據後通過pandas保存,但全都保存在一個單元格,有什麼方法能分行分列保存

最笨的辦法就是用循環拆分,構造出一個新的dataframe

I. python爬取pdf中的日期

camelot模塊。
PDF文件無疑是最常用的文件格式之一,小到教材、課件,大到合同、規劃書,我們都能見到這種文件格式但如何從PDF文件中提取其中的表格,這卻是一個大難題因為PDF中沒有一個內部的表示方式來表示一個表格這使得表格數據很難被抽取出來做分析。
camelot是Python的一個模塊,它能夠讓任何人輕松地從PDF文件中提取表格數據。

J. Python爬取數據後,如何將這些數據進行圖表繪制

爬取到的數據放到一個列表常量,變數在放到你紅框位置就好了

閱讀全文

與python爬取表格數據相關的資料

熱點內容
修改本地賬戶管理員文件夾 瀏覽:416
python爬蟲工程師招聘 瀏覽:283
小鵬p7聽音樂哪個app好 瀏覽:354
linux下的防火牆 瀏覽:954
凌達壓縮機美芝壓縮機 瀏覽:350
php後面代碼不執行 瀏覽:236
微我手機怎樣設置應用加密 瀏覽:202
條件加密 瀏覽:628
androidstudio設置中文 瀏覽:641
汽車換壓縮機能提升製冷 瀏覽:628
安卓開發配什麼電腦 瀏覽:607
linux下php模塊 瀏覽:78
阿里雲伺服器終端在哪裡 瀏覽:147
app紙有什麼用 瀏覽:224
cuteftp命令 瀏覽:507
最開始的編程語言是什麼 瀏覽:759
at遠程命令 瀏覽:492
雲伺服器哪家好點 瀏覽:215
android系統源碼閱讀 瀏覽:931
dumpjava分析工具 瀏覽:680