BeautifulSoup4无法从此表中抓取数据

小威

很抱歉这个愚蠢的问题,因为我是Web抓取的新手,并且不了解HTML等。

我正在尝试从此网站上抓取数据具体而言,从页面的此部分/表:

在此处输入图片说明

末"四"位数 9775,2275,4775,7275 末"五"位数 03881,23881,43881,63881,83881,16913,66913 末"六"位数 313110,563110,813110,063110 末"七"位数 4210962,9210962,9785582 末"八"位数 63262036 末"九"位数 080876872

对不起,那是中文,因为我无法嵌入图片,所以它看起来很糟糕。但是,该表大约位于页面的中间(距顶部40%)。表格ID为'tr_zqh'

这是我的源代码:

import bs4 as bs
import urllib.request

def scrapezqh(url):
    source = urllib.request.urlopen(url).read()
    page = bs.BeautifulSoup(source, 'html.parser')
    print(page)

url = 'http://data.eastmoney.com/xg/xg/detail/300741.html?tr_zqh=1'
print(scrapezqh(url))

它会刮除大部分表格,但会刮除我感兴趣的部分。这是返回值的一部分,我认为数据应该是:

<td class="tdcolor">网下有效申购股数(万股)
            </td>
<td class="tdwidth" id="td_wxyxsggs"> 
            </td>
</tr>
<tr id="tr_zqh">
<td class="tdtitle" id="td_zqhrowspan">中签号
            </td>
<td class="tdcolor">中签号公布日期
            </td>
<td class="ltxt" colspan="3"> 2018-02-22 (周四)
            </td>

我想获取此表的内容:(tr id="tr_zqh"上面的第六行)。但是由于某种原因,它不会抓取数据(下面没有内容)。但是,当我检查网页的源代码时,数据在表中。我认为这不是BeautifulSoup4无法处理的动态表。我已经尝试过lxml和html解析器,并且我已经尝试过pandas.read_html它返回了相同的结果。我想获得一些帮助,以了解为什么它无法获取数据以及如何修复它。非常感谢!

忘记提及我尝试过了page.find('tr'),它返回了表的一部分,但没有返回我感兴趣的行。Page.find('tr')返回屏幕快照的第一行。我想获取第二行和第三行的数据(在屏幕截图中突出显示)在此处输入图片说明

丹德夫

如果您从初始页面提取了几个变量,则可以使用它们直接向api发出请求。然后,您将获得可用于获取数据的json对象。

import requests
import re
import json
from pprint import pprint

s = requests.session()
r = s.get('http://data.eastmoney.com/xg/xg/detail/300741.html?tr_zqh=1')
gdpm = re.search('var gpdm = \'(.*)\'', r.text).group(1)
token  = re.search('http://dcfm.eastmoney.com/em_mutisvcexpandinterface/api/js/get\?type=XGSG_ZQH&token=(.*)&st=', r.text).group(1)

url = "http://dcfm.eastmoney.com/em_mutisvcexpandinterface/api/js/get?type=XGSG_ZQH&token=" + token + "&st=LASTFIGURETYPE&sr=1&filter=%28securitycode='" + gdpm + "'%29&js=var%20zqh=%28x%29"
r = s.get(url)
j = json.loads(r.text[8:])

for i in range (len(j)):
    print ( j[i]['LOTNUM'])


#pprint(j)

输出:

9775,2275,4775,7275
03881,23881,43881,63881,83881,16913,66913
313110,563110,813110,063110
4210962,9210962,9785582
63262036
080876872

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

BeautifulSoup4无法从表中抓取数据

无法使用BeautifulSoup4抓取网站

使用python和Beautifulsoup4从抓取数据中写入和保存CSV文件

如何使用python和beautifulsoup4循环抓取网站中多个页面的数据

使用BeautifulSoup4进行数据抓取的问题

从抓取的数据中分割html(Python + BeautifulSoup4)

BeautifulSoup4表

使用 Python 抓取 HTML 中的特定元素:BeautifulSoup4

如何使用pd.DataFrame方法从使用beautifulsoup4抓取的信息中手动创建数据框

从此元素获取链接| python3 BeautifulSoup4

在没有唯一类的情况下BeautifulSoup4表抓取-学习

使用BeautifulSoup4在Python中存储标签中的数据

无法使用BeautifulSoup4(初学者)抓取正确的Wikitable

使用python + beautifulSoup4从动态图中抓取数据

循环不适用于使用python和beautifulsoup4抓取数据

无法从 BeautifulSoup4 中的字符串解析“href”

无法在Mac OS上的python中安装beautifulsoup4

如何使用BeautifulSoup4从客户标签中抓取信息

如何使用BeautifulSoup4使用Python修复Web抓取中的错误

在python 3.6中使用beautifulsoup4抓取网站以获取产品信息时

使用beautifulsoup4后如何分离抓取结果?

用BeautifulSoup4解析HTML表

Beautifulsoup4不显示表内容

Python Beautifulsoup4解析多个表

如何使用 Python 和 BeautifulSoup 从 html 表中抓取数据?

ImportError:无法导入名称“ BeautifulSoup4”

使用BeautifulSoup4解析数据

如何使用beautifulsoup在h4中抓取数据?

无法使用BeautifulSoup4(Python 3)刮擦特定的表