html - 爬虫同时提取多个网页内文字与表格该怎么办

查看:137
本文介绍了html - 爬虫同时提取多个网页内文字与表格该怎么办的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

想要爬取某网站1-n页的内容,url构建为'http://www.innotree.cn/compan...',其中的?是指第n页,假设其为58095,那url就是'http://www.innotree.cn/compan...'(需要登录看详细信息,可以填我的账号13213210054,密码123b45),那假如我爬下来的公司名字和公司注册号等等可以用item.companyname,item.companyid等等存储,这些比较简单,问题是后面的融资信息,如果我用item.invest存储,那么这个变量实际是个表格,没有进行详细的展开,后期还需要处理,那如果我展开,需要的item.变量就太多了,而且每一个公司的融资次数都是不一样的,也就是说对于不同的页面来说,html标签tr数量是不确定的,包括后面的工商变更记录也是这个情况,那么我的问题是:
1.我怎么保存这种不确定行数的表格信息,因为前面用了item.name等item变量,相当于构建了一个表格了,那么怎么在这个表格中再保存融资这个不确定行数的内嵌表格信息?通常在后端的数据库都是以json形式类似的字典保存的吗?
2.如果加上保存工商变更记录这个表格信息,如上,不是相当于一个表格中嵌套了两个表格吗?感觉好复杂的样子,我考虑是把融资信息和工商变更记录信息各自单独新建一个itemi()和itemc(),最后爬完再组合起来。
由于网页比较复杂,不知道大神们通常都是怎么处理这类网页的?
感谢回复!

附上网页:


解决方案

这个问题可以从侧面变相的解决,我直说融资情况的抓取,商务信息哪个简单我就不赘述了
其实融资情况是根据 js 生成的,鼠标指向之后他生成相应的融资情况展示出来
这个 js 就在网页源码的下方

你要的这些信息直接去 js 代码里面取就行了

#!/usr/bin/python
#-*-coding:utf-8 -*-
import re
from bs4 import BeautifulSoup
import json
import requests
from selenium import webdriver
driver = webdriver.Firefox()
#tml = requests.get("http://www.innotree.cn")
html = driver.get("http://www.innotree.cn/company/58095.html")
dd = driver.page_source


result = re.search('json_finance = (.*),project_data_name',dd).group(1)
#ss = json.dumps(result, encoding='UTF-8', ensure_ascii=False)
ll = eval(result)

for x in ll:
    l = x["round"]
    m = x["money"]
    print l,m

执行之后的结果为

E轮 6亿美元
战略投资 未透露
D轮 2.15亿美元
C+轮 近亿美元
C轮 1亿美元
B+轮 数千万美元
B轮 数千万美元
A轮 数百万美元

这篇关于html - 爬虫同时提取多个网页内文字与表格该怎么办的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆