导航:首页 > 编程语言 > 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爬取表格数据相关的资料

热点内容
阿里云服务器终端在哪里 浏览:144
app纸有什么用 浏览:219
cuteftp命令 浏览:502
最开始的编程语言是什么 浏览:757
at远程命令 浏览:490
云服务器哪家好点 浏览:211
android系统源码阅读 浏览:924
dumpjava分析工具 浏览:678
怎么下载cpu源码 浏览:154
代码加密怎么取消 浏览:888
编译原理代码在哪里运行 浏览:584
解密摄影pdf 浏览:72
算法编程中级题目 浏览:250
c语言编译器毕业设计 浏览:717
医保卡申请app哪个好 浏览:945
阿里云服务器上传源码 浏览:602
营销管理科特勒pdf 浏览:696
愿望清单app哪个好 浏览:461
安卓外放声音怎么解决 浏览:195
脉脉app干什么用的 浏览:361