鱼C论坛

 找回密码
 立即注册
查看: 8092|回复: 9

[已解决]如何用爬虫抓取网页表格中的数据

[复制链接]
发表于 2017-9-23 11:42:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如何用爬虫抓取网页表格中某个单元格的数据,比如抓取图中“动力煤ZC”价格“593.00”? QQ图片20170923113723.png
最佳答案
2017-9-23 21:53:59
去学学爬虫吧
requests+beautifulsoup4
很简单
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-23 11:44:17 | 显示全部楼层
网站
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-23 11:45:03 | 显示全部楼层
用正则匹配出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-23 12:13:27 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-23 21:53:59 | 显示全部楼层    本楼为最佳答案   
去学学爬虫吧
requests+beautifulsoup4
很简单
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-24 14:54:24 | 显示全部楼层
新手·ing 发表于 2017-9-23 21:53
去学学爬虫吧
requests+beautifulsoup4
很简单

根据你的提示,我写了一下代码:
  1. import requests
  2. import bs4

  3. req=requests.get('http://www.100ppi.com/sf/day-2017-01-04.html')
  4. html=req.text
  5. soup=bs4.BeautifulSoup(html,'html.parser')
  6. soup.prettify()
  7. node=soup.find('a',attrs={'style':'color:#21469f;'},string="动力煤ZC")
  8. prePrice=node.next_element.next_element.next_element.string
  9. neaPrice=prePrice.next_element.next_element.next_element.next_element.next_element.next_element.string
  10. farPrice=neaPrice.next_element.next_element.next_element.next_element.next_element.next_element.next_element.next_element.next_element.next_element.next_element.next_element.next_element.next_element.next_element.next_element.next_element.next_element.string
  11. print (prePrice,neaPrice,farPrice)
复制代码

虽然实现了功能,但是感觉不完美,还望高手耐心指教!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-24 15:29:27 | 显示全部楼层
John2430 发表于 2017-9-24 14:54
根据你的提示,我写了一下代码:

虽然实现了功能,但是感觉不完美,还望高手耐心指教!

妙啊,我也在学这两个库
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-24 15:34:27 | 显示全部楼层
  1. import requests
  2. from bs4 import BeautifulSoup as bs

  3. doc = requests.get('http://www.100ppi.com/sf/day-2017-01-04.html').content
  4. soup = bs(doc, 'html.parser')

  5. for link in soup.find_all('tr', align = 'center'):
  6.     print(link.text)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 1

使用道具 举报

发表于 2018-4-10 00:26:55 | 显示全部楼层
  1. import urllib.request as ur
  2. from bs4 import BeautifulSoup
  3. import re
  4. url=r'http://www.100ppi.com/sf/day-2017-01-04.html'
  5. header={'User-Agent':'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0'}
  6. req=ur.Request(url=url,headers=header)
  7. html=ur.urlopen(req).read().decode('utf-8')
  8. soup=BeautifulSoup(html,'html.parser')
  9. tab=soup.find_all('table')
  10. trs=soup.find_all('tr',align='center')
  11. trs1=str(trs)
  12. print(trs1)
  13. res2=r'<td><a  style="color:#21469f;" target="_blank">(.*?)</a></td>\n<td>(.*?)</td>\n<td>(.*?)</td>\n<td>(.*?)</td>\n<td>\n<table width="100%"><tr><td align="center" width="50%"><font color=.*?>(.*?)</font></td><td align="center" width="50%"><font color=.*?>(.*?)</font></td></tr></table>\n</td>'
  14. l=re.findall(res2,trs1,re.S|re.M)
  15. l
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-10 00:27:35 | 显示全部楼层

弄出来了,但是不知道怎么把它生成表格形式,求大神指导
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-19 11:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表